Переглянути джерело

[display] Can only extend structures error (#12385)

RblSb 2 місяців тому
батько
коміт
38222480bb
2 змінених файлів з 36 додано та 2 видалено
  1. 3 2
      src/typing/typeload.ml
  2. 33 0
      tests/display/src/cases/Issue12385.hx

+ 3 - 2
src/typing/typeload.ml

@@ -237,8 +237,9 @@ let make_extension_type ctx tl =
 				if not (is_redefined ctx cf fields p) then PMap.add cf.cf_name cf fields
 				else fields
 			) a.a_fields fields
-		| _ ->
-			raise_typing_error "Can only extend structures" p
+		| t ->
+			display_error ctx.com "Can only extend structures" p;
+			PMap.empty
 	in
 	let fields = List.fold_left mk_extension PMap.empty tl in
 	let tl = List.map (fun (t,_) -> t) tl in

+ 33 - 0
tests/display/src/cases/Issue12385.hx

@@ -0,0 +1,33 @@
+package cases;
+
+class Issue12385 extends DisplayTestCase {
+	/**
+		typedef Foo = {-1-}String{-2-} & {foo:Int};
+		class Main {
+			static function main() {
+				{-3-}somebody{-4-};
+			}
+		}
+	**/
+	function test() {
+		final arr:Array<Diagnostic<Dynamic>> = [
+			{
+				kind: DKUnresolvedIdentifier,
+				severity: Error,
+				code: null,
+				range: diagnosticsRange(pos(3), pos(4)),
+				relatedInformation: [],
+				args: []
+			},
+			{
+				kind: DKCompilerError,
+				severity: Error,
+				code: null,
+				range: diagnosticsRange(pos(1), pos(2)),
+				relatedInformation: [],
+				args: "Can only extend structures"
+			}
+		];
+		arrayEq(arr, diagnostics());
+	}
+}