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

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

Issue 9403026: Issue 1575. Allow declare new named parameters in method override. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Style tweaks. Created 8 years, 10 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/Resolver.java
diff --git a/compiler/java/com/google/dart/compiler/resolver/Resolver.java b/compiler/java/com/google/dart/compiler/resolver/Resolver.java
index 25395365b4667f0d0808ef66248e0ab6118fec71..516a412a1c99f87ae5e1f352e6acc3928b1a869c 100644
--- a/compiler/java/com/google/dart/compiler/resolver/Resolver.java
+++ b/compiler/java/com/google/dart/compiler/resolver/Resolver.java
@@ -69,7 +69,6 @@ import com.google.dart.compiler.type.Type;
import com.google.dart.compiler.type.TypeVariable;
import com.google.dart.compiler.util.StringUtils;
-import java.util.ArrayList;
import java.util.EnumSet;
import java.util.Iterator;
import java.util.List;
@@ -607,70 +606,6 @@ public class Resolver {
}
}
- // If this method is an override, make sure its signature roughly matches any superclass
- // declaration.
- if (ElementKind.of(currentHolder).equals(ElementKind.CLASS)) {
- // Look for this method in super implementations.
- ClassElement classElement = (ClassElement) currentHolder;
- try {
- for (InterfaceType supertype : classElement.getAllSupertypes()) {
- Member superMember = supertype.lookupMember(member.getName());
- if (superMember == null) {
- continue;
- }
- Element superElement = superMember.getElement();
- if (ElementKind.of(superElement).equals(ElementKind.METHOD)) {
- MethodElement superMethod = (MethodElement) superElement;
- // Ignore private members
- if (DartIdentifier.isPrivateName(member.getName())
- && Elements.getLibraryElement(superMethod) != Elements
- .getLibraryElement(member)) {
- continue;
- }
- // Compare the # of parameters
- List<VariableElement> superParameters = superMethod
- .getParameters();
- if (superParameters.size() != parameters.size()) {
- onError(node.getName(),
- ResolverErrorCode.CANNOT_OVERRIDE_METHOD_WRONG_NUM_PARAMS,
- member.getName());
- } else {
- // Make sure that named parameters match
- List<VariableElement> named = new ArrayList<VariableElement>();
- for (VariableElement v : member.getParameters()) {
- if (v.isNamed()) {
- named.add(v);
- }
- }
- List<VariableElement> superNamed = new ArrayList<VariableElement>();
- for (VariableElement v : superParameters) {
- if (v.isNamed()) {
- superNamed.add(v);
- }
- }
- if (named.size() != superNamed.size()) {
- onError(node.getName(),
- ResolverErrorCode.CANNOT_OVERRIDE_METHOD_NUM_NAMED_PARAMS,
- member.getName());
- } else {
- while (!named.isEmpty()) {
- VariableElement v1 = named.remove(0);
- VariableElement v2 = superNamed.remove(0);
- if (!v1.getName().equals(v2.getName())) {
- onError(v1.getNode(),
- ResolverErrorCode.CANNOT_OVERRIDE_METHOD_ORDER_NAMED_PARAMS,
- member.getName());
- break;
- }
- }
- }
- }
- }
- }
- } catch (CyclicDeclarationException ignored) {
- } catch (DuplicatedInterfaceException ignored) {
- }
- }
context = previousContext;
innermostFunction = currentMethod = null;
return member;
« 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