Chromium Code Reviews| Index: lib/compiler/implementation/resolver.dart |
| =================================================================== |
| --- lib/compiler/implementation/resolver.dart (revision 12312) |
| +++ lib/compiler/implementation/resolver.dart (working copy) |
| @@ -211,7 +211,8 @@ |
| return visitor.mapping; |
| } |
| - DartType resolveTypeAnnotation(Element element, TypeAnnotation annotation) { |
| + DartType resolveTypeAnnotationHelper(Element element, |
| + TypeAnnotation annotation) { |
| if (annotation === null) return compiler.types.dynamicType; |
| ResolverVisitor visitor = new ResolverVisitor(compiler, element); |
| DartType result = visitor.resolveTypeAnnotation(annotation); |
| @@ -222,6 +223,19 @@ |
| return result; |
| } |
| + DartType resolveTypeAnnotation(Element element, TypeAnnotation annotation) { |
|
ahe
2012/09/13 11:49:37
I think this method could call resolveReturnType.
ngeoffray
2012/09/13 11:56:56
Done.
|
| + DartType type = resolveTypeAnnotationHelper(element, annotation); |
| + if (type == compiler.types.voidType) { |
| + error(annotation, MessageKind.VOID_NOT_ALLOWED); |
| + } |
| + return type; |
| + } |
| + |
| + DartType resolveReturnType(Element element, |
| + TypeAnnotation annotation) { |
| + return resolveTypeAnnotationHelper(element, annotation); |
| + } |
| + |
| /** |
| * Load and resolve the supertypes of [cls]. |
| * |
| @@ -2372,6 +2386,8 @@ |
| Element visitIdentifier(Identifier node) { |
| Element variables = new VariableListElement.node(currentDefinitions, |
| ElementKind.VARIABLE_LIST, enclosingElement); |
| + // Ensure a parameter is not typed 'void'. |
| + variables.computeType(compiler); |
| return new VariableElement(node.source, variables, |
| ElementKind.PARAMETER, enclosingElement, node: node); |
| } |
| @@ -2491,7 +2507,7 @@ |
| requiredParameterCount = parametersBuilder.length; |
| parameters = parametersBuilder.toLink(); |
| } |
| - DartType returnType = compiler.resolveTypeAnnotation(element, returnNode); |
| + DartType returnType = compiler.resolveReturnType(element, returnNode); |
| return new FunctionSignature(parameters, |
| visitor.optionalParameters, |
| requiredParameterCount, |