Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(50)

Unified Diff: compiler/java/com/google/dart/compiler/resolver/MemberBuilder.java

Issue 10520019: Issue 3271. Top-level function 'main' should not have parameters (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | compiler/java/com/google/dart/compiler/resolver/ResolverErrorCode.java » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
« no previous file with comments | « no previous file | compiler/java/com/google/dart/compiler/resolver/ResolverErrorCode.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698