Index: dart/compiler/java/com/google/dart/compiler/resolver/MethodElementImplementation.java |
diff --git a/dart/compiler/java/com/google/dart/compiler/resolver/MethodElementImplementation.java b/dart/compiler/java/com/google/dart/compiler/resolver/MethodElementImplementation.java |
deleted file mode 100644 |
index 74ca6091506ce87c623bb0ff3129ab60284741c1..0000000000000000000000000000000000000000 |
--- a/dart/compiler/java/com/google/dart/compiler/resolver/MethodElementImplementation.java |
+++ /dev/null |
@@ -1,200 +0,0 @@ |
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
- |
-package com.google.dart.compiler.resolver; |
- |
-import com.google.common.annotations.VisibleForTesting; |
-import com.google.common.collect.ImmutableSet; |
-import com.google.dart.compiler.ast.DartBlock; |
-import com.google.dart.compiler.ast.DartClass; |
-import com.google.dart.compiler.ast.DartFunctionExpression; |
-import com.google.dart.compiler.ast.DartIdentifier; |
-import com.google.dart.compiler.ast.DartMethodDefinition; |
-import com.google.dart.compiler.ast.DartNativeBlock; |
-import com.google.dart.compiler.ast.DartNode; |
-import com.google.dart.compiler.ast.DartObsoleteMetadata; |
-import com.google.dart.compiler.ast.Modifiers; |
-import com.google.dart.compiler.common.SourceInfo; |
-import com.google.dart.compiler.type.FunctionType; |
-import com.google.dart.compiler.type.Type; |
- |
-import java.util.ArrayList; |
-import java.util.Collections; |
-import java.util.List; |
-import java.util.Set; |
- |
-class MethodElementImplementation extends AbstractNodeElement implements MethodNodeElement { |
- private final DartObsoleteMetadata metadata; |
- private final Modifiers modifiers; |
- private final EnclosingElement holder; |
- private final ElementKind kind; |
- private final List<VariableElement> parameters = new ArrayList<VariableElement>(); |
- private FunctionType type; |
- private final SourceInfo nameLocation; |
- private final boolean hasBody; |
- private Set<Element> overridden = ImmutableSet.of(); |
- |
- // TODO(ngeoffray): name, return type, argument types. |
- @VisibleForTesting |
- MethodElementImplementation(DartFunctionExpression node, String name, Modifiers modifiers) { |
- super(node, name); |
- this.metadata = DartObsoleteMetadata.EMPTY; |
- this.modifiers = modifiers; |
- this.hasBody = true; |
- this.holder = findParentEnclosingElement(node); |
- this.kind = ElementKind.FUNCTION_OBJECT; |
- if (node != null && node.getName() != null) { |
- this.nameLocation = node.getName().getSourceInfo(); |
- } else { |
- this.nameLocation = SourceInfo.UNKNOWN; |
- } |
- } |
- |
- protected MethodElementImplementation(DartMethodDefinition node, String name, |
- EnclosingElement holder) { |
- super(node, name); |
- if (node != null) { |
- this.metadata = node.getObsoleteMetadata(); |
- this.modifiers = node.getModifiers(); |
- this.nameLocation = node.getName().getSourceInfo(); |
- DartBlock body = node.getFunction().getBody(); |
- this.hasBody = body != null && !(body instanceof DartNativeBlock); |
- } else { |
- this.metadata = DartObsoleteMetadata.EMPTY; |
- this.modifiers = Modifiers.NONE; |
- this.nameLocation = SourceInfo.UNKNOWN; |
- this.hasBody = false; |
- } |
- this.holder = holder; |
- this.kind = ElementKind.METHOD; |
- } |
- |
- @Override |
- public DartObsoleteMetadata getMetadata() { |
- return metadata; |
- } |
- |
- @Override |
- public Modifiers getModifiers() { |
- return modifiers; |
- } |
- |
- @Override |
- public ElementKind getKind() { |
- return kind; |
- } |
- |
- @Override |
- public EnclosingElement getEnclosingElement() { |
- return holder; |
- } |
- |
- @Override |
- public boolean isConstructor() { |
- return false; |
- } |
- |
- @Override |
- public boolean isStatic() { |
- return getModifiers().isStatic(); |
- } |
- |
- @Override |
- public List<VariableElement> getParameters() { |
- return parameters; |
- } |
- |
- @Override |
- public boolean hasBody() { |
- return hasBody; |
- } |
- |
- void addParameter(VariableElement parameter) { |
- parameters.add(parameter); |
- } |
- |
- @Override |
- public Type getReturnType() { |
- return getType().getReturnType(); |
- } |
- |
- @Override |
- void setType(Type type) { |
- this.type = (FunctionType) type; |
- } |
- |
- @Override |
- public FunctionType getType() { |
- return type; |
- } |
- |
- @Override |
- public FunctionType getFunctionType() { |
- return getType(); |
- } |
- |
- @Override |
- public boolean isInterface() { |
- return false; |
- } |
- |
- @Override |
- public Iterable<Element> getMembers() { |
- return Collections.emptyList(); |
- } |
- |
- @Override |
- public Element lookupLocalElement(String name) { |
- return null; |
- } |
- |
- public static MethodElementImplementation fromMethodNode(DartMethodDefinition node, |
- EnclosingElement holder) { |
- String targetName; |
- if(node.getName() instanceof DartIdentifier) { |
- targetName = ((DartIdentifier) node.getName()).getName(); |
- if (targetName.equals("-") && node.getFunction().getParameters().size() == 1) { |
- targetName += "binary"; |
- } |
- } else { |
- // Visit the unknown node to generate a string for our use. |
- targetName = node.toSource(); |
- } |
- return new MethodElementImplementation(node, targetName, holder); |
- } |
- |
- public static MethodElementImplementation fromFunctionExpression(DartFunctionExpression node, |
- Modifiers modifiers) { |
- return new MethodElementImplementation(node, node.getFunctionName(), modifiers); |
- } |
- |
- /** |
- * @return the innermost {@link EnclosingElement} for given {@link DartNode}, may be |
- * <code>null</code>. |
- */ |
- private static EnclosingElement findParentEnclosingElement(DartNode node) { |
- while (node != null && node.getParent() != null) { |
- node = node.getParent(); |
- boolean isEnclosingNode = node instanceof DartClass || node instanceof DartMethodDefinition |
- || node instanceof DartFunctionExpression; |
- if (isEnclosingNode && node.getElement() instanceof EnclosingElement) { |
- return (EnclosingElement) node.getElement(); |
- } |
- } |
- return null; |
- } |
- |
- @Override |
- public SourceInfo getNameLocation() { |
- return nameLocation; |
- } |
- |
- public void setOverridden(Set<Element> overridden) { |
- this.overridden = overridden; |
- } |
- |
- public Set<Element> getOverridden() { |
- return overridden; |
- } |
-} |