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

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: Feedback from mmendez 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..76c9e0681845a3168ab1f304d3b52d235900c9a8 100644
--- a/compiler/java/com/google/dart/compiler/resolver/ResolveVisitor.java
+++ b/compiler/java/com/google/dart/compiler/resolver/ResolveVisitor.java
@@ -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;
}
@@ -60,7 +58,7 @@ abstract class ResolveVisitor extends DartNodeTraverser<Element> {
continue;
}
bindTypeVariable((TypeVariableElement) typeNode.getType().getElement());
- }
+ }
}
final FunctionAliasElement resolveFunctionAlias(DartFunctionTypeAlias node) {
@@ -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();
@@ -106,13 +104,15 @@ abstract class ResolveVisitor extends DartNodeTraverser<Element> {
abstract boolean isStaticContext();
+ abstract boolean isFactoryContext();
+
@Override
public Element visitParameter(DartParameter node) {
ErrorCode typeErrorCode =
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,19 @@ 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