Dan Korostelev 5 years ago
parent
commit
d8893970a1
1 changed files with 6 additions and 7 deletions
  1. 6 7
      src/typing/typeloadModule.ml

+ 6 - 7
src/typing/typeloadModule.ml

@@ -201,7 +201,7 @@ let module_pass_1 ctx m tdecls loadp =
 		) !decls;
 		if priv then (fst m.m_path @ ["_" ^ snd m.m_path], name) else (fst m.m_path, name)
 	in
-	let pt = ref None in
+	let has_declaration = ref false in
 	let rec make_decl acc decl =
 		let p = snd decl in
 		let check_type_name type_name meta =
@@ -210,12 +210,11 @@ let module_pass_1 ctx m tdecls loadp =
 		in
 		let acc = (match fst decl with
 		| EImport _ | EUsing _ ->
-			(match !pt with
-			| None -> acc
-			| Some _ -> error "import and using may not appear after a type declaration" p)
+			if !has_declaration then error "import and using may not appear after a type declaration" p;
+			acc
 		| EClass d ->
 			let name = fst d.d_name in
-			pt := Some p;
+			has_declaration := true;
 			let priv = List.mem HPrivate d.d_flags in
 			let path = make_path name priv p in
 			let c = mk_class m path p (pos d.d_name) in
@@ -236,7 +235,7 @@ let module_pass_1 ctx m tdecls loadp =
 			acc
 		| EEnum d ->
 			let name = fst d.d_name in
-			pt := Some p;
+			has_declaration := true;
 			let priv = List.mem EPrivate d.d_flags in
 			let path = make_path name priv p in
 			if Meta.has (Meta.Custom ":fakeEnum") d.d_meta then error "@:fakeEnum enums is no longer supported in Haxe 4, use extern enum abstract instead" p;
@@ -262,7 +261,7 @@ let module_pass_1 ctx m tdecls loadp =
 			let name = fst d.d_name in
 			check_type_name name d.d_meta;
 			if has_meta Meta.Using d.d_meta then error "@:using on typedef is not allowed" p;
-			pt := Some p;
+			has_declaration := true;
 			let priv = List.mem EPrivate d.d_flags in
 			let path = make_path name priv p in
 			let t = {