瀏覽代碼

Added warning for duplicated import aliases

git-svn-id: https://svn-dept.inf.ethz.ch/svn/lecturers/a2/trunk@8709 8c9fc860-2736-0410-a75d-ab315db34111
negelef 6 年之前
父節點
當前提交
053c3baa97
共有 1 個文件被更改,包括 5 次插入2 次删除
  1. 5 2
      source/FoxParser.Mod

+ 5 - 2
source/FoxParser.Mod

@@ -2353,7 +2353,7 @@ TYPE
 			Import     = Identifier [':=' Identifier] ['in' Identifier].
 		**)
 		PROCEDURE ImportList( scope: SyntaxTree.Scope );
-		VAR alias, name, context: SyntaxTree.Identifier;  import: SyntaxTree.Import; position, idPosition: Position;
+		VAR alias, name, context: SyntaxTree.Identifier; import: SyntaxTree.Import; position, idPosition: Position; aliased: BOOLEAN;
 		BEGIN
 			IF Trace THEN S( "ImportList" ) END;
 			(* import token already consumed *)
@@ -2361,13 +2361,16 @@ TYPE
 				alias := Identifier(idPosition);
 				position := token.position;
 				IF alias # SyntaxTree.invalidIdentifier THEN
-					IF Optional( Scanner.Becomes ) THEN name := Identifier(idPosition) ELSE name := alias;  END;
+					aliased := Optional( Scanner.Becomes );
+					IF aliased THEN name := Identifier(idPosition) ELSE name := alias END;
 					import := SyntaxTree.NewImport( position, alias, name, TRUE );
 					CommentSymbol(import);
 					IF Optional(Scanner.In) THEN
 						position := token.position;
 						context := Identifier(idPosition);
 						IF context # SyntaxTree.invalidIdentifier THEN  import.SetContext(context) END;
+					ELSIF aliased & (name = alias) THEN
+						Basic.Warning(diagnostics, scanner.source^, position, "duplicated import alias");
 					END;
 					WITH scope: 
 					SyntaxTree.ModuleScope DO