Index: compiler/java/com/google/dart/compiler/resolver/MemberBuilder.java |
diff --git a/compiler/java/com/google/dart/compiler/resolver/MemberBuilder.java b/compiler/java/com/google/dart/compiler/resolver/MemberBuilder.java |
index caf651f3857365100bf36395a9d32d7eb4a5fc6f..5b23fc7b755cbec1327de6bfcb1ebed434cd71cc 100644 |
--- a/compiler/java/com/google/dart/compiler/resolver/MemberBuilder.java |
+++ b/compiler/java/com/google/dart/compiler/resolver/MemberBuilder.java |
@@ -5,6 +5,7 @@ |
package com.google.dart.compiler.resolver; |
import com.google.common.annotations.VisibleForTesting; |
+import com.google.common.base.Objects; |
import com.google.dart.compiler.DartCompilerContext; |
import com.google.dart.compiler.ErrorCode; |
import com.google.dart.compiler.ast.ASTVisitor; |
@@ -152,6 +153,7 @@ public class MemberBuilder { |
assertTopLevel(method); |
} |
if (element != null) { |
+ checkTopLevelMainFunction(method); |
checkModifiers(element, method); |
recordElement(method, element); |
recordElement(method.getName(), element); |
@@ -448,6 +450,17 @@ public class MemberBuilder { |
return ElementKind.NONE; |
} |
+ /** |
+ * Checks that top-level "main()" has no parameters. |
+ */ |
+ private void checkTopLevelMainFunction(DartMethodDefinition method) { |
+ if (Objects.equal(method.getName().toSource(), "main") |
+ && currentHolder instanceof LibraryElement |
+ && !method.getFunction().getParameters().isEmpty()) { |
+ resolutionError(method.getName(), ResolverErrorCode.MAIN_FUNCTION_PARAMETERS); |
+ } |
+ } |
+ |
private void checkModifiers(MethodElement element, DartMethodDefinition method) { |
Modifiers modifiers = method.getModifiers(); |
boolean isNonFactoryConstructor = Elements.isNonFactoryConstructor(element); |