Selaa lähdekoodia

Eliminate final case of camlp5 left-factorization (#11859)

tobil4sk 9 kuukautta sitten
vanhempi
commit
c4868e59c1
1 muutettua tiedostoa jossa 9 lisäystä ja 6 poistoa
  1. 9 6
      src/syntax/grammar.mly

+ 9 - 6
src/syntax/grammar.mly

@@ -969,12 +969,15 @@ and parse_class_field tdecl s =
 		| [< '(Kwd Final,p1) >] ->
 			check_redundant_var p1 s;
 			begin match s with parser
-			| [< opt,name = questionable_dollar_ident; '(POpen,_); i1 = property_ident; '(Comma,_); i2 = property_ident; '(PClose,_); t = popt parse_type_hint; e,p2 = parse_var_field_assignment >] ->
-				let meta = check_optional opt name in
-				name,punion p1 p2,FProp(i1,i2,t,e),(al @ [AFinal,p1]),meta
-			| [< opt,name = questionable_dollar_ident; t = popt parse_type_hint; e,p2 = parse_var_field_assignment >] ->
-				let meta = check_optional opt name in
-				name,punion p1 p2,FVar(t,e),(al @ [AFinal,p1]),meta
+			| [< opt,name = questionable_dollar_ident; s >] ->
+				begin match s with parser
+				| [< '(POpen,_); i1 = property_ident; '(Comma,_); i2 = property_ident; '(PClose,_); t = popt parse_type_hint; e,p2 = parse_var_field_assignment >] ->
+					let meta = check_optional opt name in
+					name,punion p1 p2,FProp(i1,i2,t,e),(al @ [AFinal,p1]),meta
+				| [< t = popt parse_type_hint; e,p2 = parse_var_field_assignment >] ->
+					let meta = check_optional opt name in
+					name,punion p1 p2,FVar(t,e),(al @ [AFinal,p1]),meta
+				end
 			| [< al2 = plist parse_cf_rights; f = parse_function_field doc meta (al @ ((AFinal,p1) :: al2)) >] ->
 				f
 			| [< >] ->