diff --git a/src/qir/parser/Parser.java b/src/qir/parser/Parser.java
index 0596b0ce0261c0d437f1a1f3d2759c4d88274d92..cfc86b4228880a60f4634edca0257ff83dddf07e 100644
--- a/src/qir/parser/Parser.java
+++ b/src/qir/parser/Parser.java
@@ -746,6 +746,10 @@ public class Parser {
 			res = RecordType();
 		} else if (la.kind == 39) {
 			res = ListType();
+		} else if (la.kind == 18) {
+			Get();
+			res = Type();
+			Expect(20);
 		} else SynErr(62);
 		return res;
 	}
diff --git a/src/qir/parser/qir.atg b/src/qir/parser/qir.atg
index 3038d1c3a71cd410583a74a3c68703c9b6879943..b9e35ee272ad9aad91c9b2b5a45cd5f1e42d55cc 100644
--- a/src/qir/parser/qir.atg
+++ b/src/qir/parser/qir.atg
@@ -193,6 +193,7 @@ NonFunctionType<out QIRType res> =											(. res = null; .)
 ConstantType<out res>
 | RecordType<out res>
 | ListType<out res>
+| "(" Type<out res> ")"
 )
 .
 
diff --git a/src/qir/parser/test.qir b/src/qir/parser/test.qir
index fb1ec8f4f247031ca6ac8376b101cb0e4e07924d..e9487f5a18860be0d998ff851db7bdc8132e6198 100644
--- a/src/qir/parser/test.qir
+++ b/src/qir/parser/test.qir
@@ -1 +1 @@
-(fun : { x:int ; y:list[string] } x -> x) @ [ { x = 2; y = 3 + 4 } : { x : int; y : int }; [ "toto" ] : list[string]; (fun : int -> int x -> x + 2) ]
+(fun : { x:int ; y:list[string] } x -> x) @ [ { x = 2; y = 3 + 4 } : { x : int; y : int }; [ "toto" ] : list[string]; (fun : int -> (int -> int) -> int x -> x + 2) ]