Browse Source

Report unknown idents in switch (#10506)

* Report unknown indents in switch

* Use comma
RblSb 3 years ago
parent
commit
2d5b149210

+ 1 - 1
src/typing/matcher.ml

@@ -312,7 +312,7 @@ module Pattern = struct
 				with _ ->
 				with _ ->
 					restore();
 					restore();
 					if not (is_lower_ident s) && (match s.[0] with '`' | '_' -> false | _ -> true) then begin
 					if not (is_lower_ident s) && (match s.[0] with '`' | '_' -> false | _ -> true) then begin
-						display_error ctx "Pattern variables must be lower-case" p;
+						display_error ctx ("Unknown identifier : " ^ s ^ ", pattern variables must be lower-case or with `var ` prefix") p;
 					end;
 					end;
 					begin match StringError.get_similar s (get_enumerable_idents()) with
 					begin match StringError.get_similar s (get_enumerable_idents()) with
 						| [] ->
 						| [] ->

+ 1 - 1
tests/misc/projects/Issue4907/compile-fail.hxml.stderr

@@ -1 +1 @@
-Main.hx:7: characters 18-23 : Pattern variables must be lower-case
+Main.hx:7: characters 18-23 : Unknown identifier : VALUE, pattern variables must be lower-case or with `var ` prefix

+ 12 - 0
tests/misc/projects/Issue7669/Main.hx

@@ -0,0 +1,12 @@
+class Main {
+	static function main() {
+		switch Std.random(0) {
+			case NumpadSubtract:
+			case NumpadDecimal:
+		}
+		switch Std.random(0) {
+			case 1, 2, NumpadSubtract:
+			case _:
+		}
+	}
+}

+ 2 - 0
tests/misc/projects/Issue7669/compile-fail.hxml

@@ -0,0 +1,2 @@
+--main Main
+--interp

+ 5 - 0
tests/misc/projects/Issue7669/compile-fail.hxml.stderr

@@ -0,0 +1,5 @@
+Main.hx:4: characters 9-23 : Unknown identifier : NumpadSubtract, pattern variables must be lower-case or with `var ` prefix
+Main.hx:5: characters 9-22 : Unknown identifier : NumpadDecimal, pattern variables must be lower-case or with `var ` prefix
+Main.hx:5: characters 4-23 : Warning : This case is unused
+Main.hx:8: characters 15-29 : Unknown identifier : NumpadSubtract, pattern variables must be lower-case or with `var ` prefix
+Main.hx:8: characters 15-29 : Variable NumpadSubtract must appear exactly once in each sub-pattern

+ 2 - 2
tests/misc/projects/issue5002/compile2-fail.hxml.stderr

@@ -12,7 +12,7 @@ Main2.hx:10: characters 3-25 : ... Called from macro here
 Main2.hx:11: characters 3-24 : ... Called from macro here
 Main2.hx:11: characters 3-24 : ... Called from macro here
 "0_argument" is not a valid function argument name.
 "0_argument" is not a valid function argument name.
 Main2.hx:12: characters 3-32 : ... Called from macro here
 Main2.hx:12: characters 3-32 : ... Called from macro here
-Main2.hx:13: characters 3-27 : Pattern variables must be lower-case
+Main2.hx:13: characters 3-27 : Unknown identifier : 0_patternVariable, pattern variables must be lower-case or with `var ` prefix
 Main2.hx:14: characters 3-23 : "0_forVariable" is not a valid for variable name.
 Main2.hx:14: characters 3-23 : "0_forVariable" is not a valid for variable name.
 Main2.hx:15: characters 3-31 : "0_forVariableKey" is not a valid for variable name.
 Main2.hx:15: characters 3-31 : "0_forVariableKey" is not a valid for variable name.
-Main2.hx:15: characters 3-31 : "0_forVariableValue" is not a valid for variable name.
+Main2.hx:15: characters 3-31 : "0_forVariableValue" is not a valid for variable name.

+ 1 - 1
tests/misc/projects/issue5002/compile4-fail.hxml.stderr

@@ -1,4 +1,4 @@
 Main4.hx:3: characters 7-9 : Variable names starting with a dollar are not allowed: "$i"
 Main4.hx:3: characters 7-9 : Variable names starting with a dollar are not allowed: "$i"
 Main4.hx:5: characters 17-19 : Catch variable names starting with a dollar are not allowed: "$i"
 Main4.hx:5: characters 17-19 : Catch variable names starting with a dollar are not allowed: "$i"
 Main4.hx:7: characters 8-10 : For variable names starting with a dollar are not allowed: "$i"
 Main4.hx:7: characters 8-10 : For variable names starting with a dollar are not allowed: "$i"
-Main4.hx:10: characters 9-11 : Pattern variables must be lower-case
+Main4.hx:10: characters 9-11 : Unknown identifier : $i, pattern variables must be lower-case or with `var ` prefix