| Index: lib/compiler/implementation/resolver.dart
|
| ===================================================================
|
| --- lib/compiler/implementation/resolver.dart (revision 12312)
|
| +++ lib/compiler/implementation/resolver.dart (working copy)
|
| @@ -212,6 +212,14 @@
|
| }
|
|
|
| DartType resolveTypeAnnotation(Element element, TypeAnnotation annotation) {
|
| + DartType type = resolveReturnType(element, annotation);
|
| + if (type == compiler.types.voidType) {
|
| + error(annotation, MessageKind.VOID_NOT_ALLOWED);
|
| + }
|
| + return type;
|
| + }
|
| +
|
| + DartType resolveReturnType(Element element, TypeAnnotation annotation) {
|
| if (annotation === null) return compiler.types.dynamicType;
|
| ResolverVisitor visitor = new ResolverVisitor(compiler, element);
|
| DartType result = visitor.resolveTypeAnnotation(annotation);
|
| @@ -2372,6 +2380,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 +2501,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,
|
|
|