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

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

Issue 8948001: Updates dartc to recognize 'default' keyword on interface and updated factory method syntax (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Got rid of some problems. Created 9 years 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
Index: compiler/java/com/google/dart/compiler/resolver/ResolveVisitor.java
diff --git a/compiler/java/com/google/dart/compiler/resolver/ResolveVisitor.java b/compiler/java/com/google/dart/compiler/resolver/ResolveVisitor.java
index f3372c186c7aa82d78f68a6a41874d1b8ef37b14..fbe11647d7689647771df3d2e56acc282ac9c0c0 100644
--- a/compiler/java/com/google/dart/compiler/resolver/ResolveVisitor.java
+++ b/compiler/java/com/google/dart/compiler/resolver/ResolveVisitor.java
@@ -4,6 +4,9 @@
package com.google.dart.compiler.resolver;
+import java.util.ArrayList;
+import java.util.List;
+
import com.google.dart.compiler.ErrorCode;
import com.google.dart.compiler.ast.DartCatchBlock;
import com.google.dart.compiler.ast.DartFunction;
@@ -19,9 +22,6 @@ import com.google.dart.compiler.type.Type;
import com.google.dart.compiler.type.TypeVariable;
import com.google.dart.compiler.type.Types;
-import java.util.ArrayList;
-import java.util.List;
-
/**
* Shared visitor between Resolver and MemberBuilder.
*/
@@ -34,9 +34,7 @@ abstract class ResolveVisitor extends DartNodeTraverser<Element> {
abstract ResolutionContext getContext();
- final MethodElement resolveFunction(DartFunction node, MethodElement element,
- List<TypeVariable> typeVariables) {
- bindTypeVariables(typeVariables);
+ final MethodElement resolveFunction(DartFunction node, MethodElement element) {
for (DartParameter parameter : node.getParams()) {
Elements.addParameter(element, (VariableElement) parameter.accept(this));
}
@@ -44,11 +42,11 @@ abstract class ResolveVisitor extends DartNodeTraverser<Element> {
resolveType(
node.getReturnTypeNode(),
element.getModifiers().isStatic(),
+ element.getModifiers().isFactory(),
TypeErrorCode.NO_SUCH_TYPE);
ClassElement functionElement = typeProvider.getFunctionType().getElement();
FunctionType type = Types.makeFunctionType(getContext(), functionElement,
- element.getParameters(), returnType,
- typeVariables);
+ element.getParameters(), returnType);
Elements.setType(element, type);
return element;
}
@@ -85,7 +83,7 @@ abstract class ResolveVisitor extends DartNodeTraverser<Element> {
DartTypeNode boundNode = typeParameterNode.getBound();
Type bound;
if (boundNode != null) {
- bound = getContext().resolveType(boundNode, true, ResolverErrorCode.NO_SUCH_TYPE);
+ bound = getContext().resolveType(boundNode, true, isFactoryContext(), ResolverErrorCode.NO_SUCH_TYPE);
boundNode.setType(bound);
} else {
bound = typeProvider.getObjectType();
@@ -105,6 +103,8 @@ abstract class ResolveVisitor extends DartNodeTraverser<Element> {
}
abstract boolean isStaticContext();
+
+ abstract boolean isFactoryContext();
@Override
public Element visitParameter(DartParameter node) {
@@ -112,7 +112,7 @@ abstract class ResolveVisitor extends DartNodeTraverser<Element> {
node.getParent() instanceof DartCatchBlock
? ResolverErrorCode.NO_SUCH_TYPE
: TypeErrorCode.NO_SUCH_TYPE;
- Type type = resolveType(node.getTypeNode(), isStaticContext(), typeErrorCode);
+ Type type = resolveType(node.getTypeNode(), isStaticContext(), isFactoryContext(), typeErrorCode);
VariableElement element = Elements.parameterElement(node, node.getParameterName(),
node.getModifiers());
List<DartParameter> functionParameters = node.getFunctionParameters();
@@ -123,22 +123,18 @@ abstract class ResolveVisitor extends DartNodeTraverser<Element> {
parameterElements.add((VariableElement) parameter.accept(this));
}
ClassElement functionElement = typeProvider.getFunctionType().getElement();
- type = Types.makeFunctionType(getContext(), functionElement, parameterElements, type, null);
- DartTypeNode typeNode = node.getTypeNode();
- if (typeNode != null) {
- typeNode.setType(type);
- }
+ type = Types.makeFunctionType(getContext(), functionElement, parameterElements, type);
}
Elements.setType(element, type);
return recordElement(node, element);
}
- final Type resolveType(DartTypeNode node, boolean isStatic, ErrorCode errorCode) {
+ final Type resolveType(DartTypeNode node, boolean isStatic, boolean isFactory, ErrorCode errorCode) {
if (node == null) {
return getTypeProvider().getDynamicType();
}
assert node.getType() == null || node.getType() instanceof DynamicType;
- Type type = getContext().resolveType(node, isStatic, errorCode);
+ Type type = getContext().resolveType(node, isStatic, isFactory, errorCode);
if (type == null) {
type = getTypeProvider().getDynamicType();
}

Powered by Google App Engine
This is Rietveld 408576698