| Index: dart/compiler/java/com/google/dart/compiler/resolver/ResolveVisitor.java
|
| diff --git a/dart/compiler/java/com/google/dart/compiler/resolver/ResolveVisitor.java b/dart/compiler/java/com/google/dart/compiler/resolver/ResolveVisitor.java
|
| deleted file mode 100644
|
| index 20559ef66000682afdded7a81c8e199fbe8f23f1..0000000000000000000000000000000000000000
|
| --- a/dart/compiler/java/com/google/dart/compiler/resolver/ResolveVisitor.java
|
| +++ /dev/null
|
| @@ -1,162 +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.dart.compiler.ErrorCode;
|
| -import com.google.dart.compiler.ast.ASTNodes;
|
| -import com.google.dart.compiler.ast.ASTVisitor;
|
| -import com.google.dart.compiler.ast.DartFunction;
|
| -import com.google.dart.compiler.ast.DartFunctionTypeAlias;
|
| -import com.google.dart.compiler.ast.DartIdentifier;
|
| -import com.google.dart.compiler.ast.DartNode;
|
| -import com.google.dart.compiler.ast.DartParameter;
|
| -import com.google.dart.compiler.ast.DartThisExpression;
|
| -import com.google.dart.compiler.ast.DartTypeNode;
|
| -import com.google.dart.compiler.ast.DartTypeParameter;
|
| -import com.google.dart.compiler.common.HasSourceInfo;
|
| -import com.google.dart.compiler.type.FunctionType;
|
| -import com.google.dart.compiler.type.Type;
|
| -import com.google.dart.compiler.type.Types;
|
| -
|
| -import java.util.ArrayList;
|
| -import java.util.HashSet;
|
| -import java.util.List;
|
| -
|
| -/**
|
| - * Shared visitor between Resolver and MemberBuilder.
|
| - */
|
| -abstract class ResolveVisitor extends ASTVisitor<Element> {
|
| - private final CoreTypeProvider typeProvider;
|
| -
|
| - ResolveVisitor(CoreTypeProvider typeProvider) {
|
| - this.typeProvider = typeProvider;
|
| - }
|
| -
|
| - abstract ResolutionContext getContext();
|
| -
|
| - final MethodElement resolveFunction(DartFunction node, MethodElement element) {
|
| - for (DartParameter parameter : node.getParameters()) {
|
| - Elements.addParameter(element, (VariableElement) parameter.accept(this));
|
| - }
|
| - resolveFunctionWithParameters(node, element);
|
| - Type returnType =
|
| - resolveType(
|
| - node.getReturnTypeNode(),
|
| - element.getModifiers().isStatic(),
|
| - element.getModifiers().isFactory(),
|
| - true,
|
| - TypeErrorCode.NO_SUCH_TYPE,
|
| - TypeErrorCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS);
|
| - ClassElement functionElement = typeProvider.getFunctionType().getElement();
|
| - FunctionType type = Types.makeFunctionType(getContext(), functionElement,
|
| - element.getParameters(), returnType);
|
| - Elements.setType(element, type);
|
| - for (DartParameter parameter : node.getParameters()) {
|
| - if (!(parameter.getQualifier() instanceof DartThisExpression) &&
|
| - DartIdentifier.isPrivateName(parameter.getElement().getName())) {
|
| - if (parameter.getModifiers().isOptional()) {
|
| - getContext().onError(parameter.getName(),
|
| - ResolverErrorCode.OPTIONAL_PARAMETERS_CANNOT_START_WITH_UNDER);
|
| - }
|
| - if (parameter.getModifiers().isNamed()) {
|
| - getContext().onError(parameter.getName(),
|
| - ResolverErrorCode.NAMED_PARAMETERS_CANNOT_START_WITH_UNDER);
|
| - }
|
| - }
|
| - }
|
| - return element;
|
| - }
|
| -
|
| - /**
|
| - * Allows subclass to process {@link DartFunction} element with parameters, but before
|
| - * {@link FunctionType} is created for it.
|
| - */
|
| - protected void resolveFunctionWithParameters(DartFunction node, MethodElement element) {
|
| - }
|
| -
|
| - final FunctionAliasElement resolveFunctionAlias(DartFunctionTypeAlias node) {
|
| - HashSet<String> parameterNames = new HashSet<String>();
|
| - for (DartTypeParameter parameter : node.getTypeParameters()) {
|
| - TypeVariableElement typeVar = (TypeVariableElement) parameter.getElement();
|
| - String parameterName = typeVar.getName();
|
| - if (parameterNames.contains(parameterName)) {
|
| - getContext().onError(parameter, ResolverErrorCode.DUPLICATE_TYPE_VARIABLE, parameterName);
|
| - } else {
|
| - parameterNames.add(parameterName);
|
| - }
|
| - getContext().getScope().declareElement(parameterName, typeVar);
|
| - }
|
| - return null;
|
| - }
|
| -
|
| - @Override
|
| - public Element visitParameter(DartParameter node) {
|
| - Type type = resolveType(node.getTypeNode(), ASTNodes.isStaticContext(node),
|
| - ASTNodes.isFactoryContext(node), true, TypeErrorCode.NO_SUCH_TYPE,
|
| - TypeErrorCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS);
|
| - VariableElement element =
|
| - Elements.parameterElement(
|
| - getEnclosingElement(),
|
| - node,
|
| - node.getParameterName(),
|
| - node.getModifiers());
|
| - List<DartParameter> functionParameters = node.getFunctionParameters();
|
| - if (functionParameters != null) {
|
| - List<VariableElement> parameterElements =
|
| - new ArrayList<VariableElement>(functionParameters.size());
|
| - for (DartParameter parameter: functionParameters) {
|
| - parameterElements.add((VariableElement) parameter.accept(this));
|
| - }
|
| - ClassElement functionElement = typeProvider.getFunctionType().getElement();
|
| - type = Types.makeFunctionType(getContext(), functionElement, parameterElements, type);
|
| - }
|
| - Elements.setType(element, type);
|
| - recordElement(node.getName(), element);
|
| - return recordElement(node, element);
|
| - }
|
| -
|
| - protected EnclosingElement getEnclosingElement() {
|
| - return null;
|
| - }
|
| -
|
| - final Type resolveType(DartTypeNode node, boolean isStatic, boolean isFactory,
|
| - boolean isAnnotation, ErrorCode errorCode, ErrorCode wrongNumberErrorCode) {
|
| - if (node == null) {
|
| - return getTypeProvider().getDynamicType();
|
| - }
|
| -// assert node.getType() == null || node.getType() instanceof DynamicType;
|
| - Type type = getContext().resolveType(node, isStatic, isFactory, isAnnotation, errorCode,
|
| - wrongNumberErrorCode);
|
| - if (type == null) {
|
| - type = getTypeProvider().getDynamicType();
|
| - }
|
| - node.setType(type);
|
| - Element element = type.getElement();
|
| - recordElement(node.getIdentifier(), element);
|
| - checkDeprecated(node, element);
|
| - return type;
|
| - }
|
| -
|
| - protected final void checkDeprecated(HasSourceInfo nameNode, Element element) {
|
| - if (element != null && element.getMetadata().isDeprecated()) {
|
| - getContext().onError(nameNode, TypeErrorCode.DEPRECATED_ELEMENT,
|
| - Elements.getDeprecatedElementTitle(element));
|
| - }
|
| - }
|
| -
|
| - protected <E extends Element> E recordElement(DartNode node, E element) {
|
| - node.getClass();
|
| - if (element == null) {
|
| - // TypeAnalyzer will diagnose unresolved identifiers.
|
| - return null;
|
| - }
|
| - node.setElement(element);
|
| - return element;
|
| - }
|
| -
|
| - CoreTypeProvider getTypeProvider() {
|
| - return typeProvider;
|
| - }
|
| -}
|
|
|