Chromium Code Reviews| Index: dart/lib/compiler/implementation/resolver.dart |
| diff --git a/dart/lib/compiler/implementation/resolver.dart b/dart/lib/compiler/implementation/resolver.dart |
| index b169bec2a9c83dda9449d0ca5dba4e8385e75278..e76721f1cdf1df240d3143231b0a70cd5fb9830a 100644 |
| --- a/dart/lib/compiler/implementation/resolver.dart |
| +++ b/dart/lib/compiler/implementation/resolver.dart |
| @@ -992,7 +992,8 @@ class ResolverVisitor extends CommonResolverVisitor<Element> { |
| // Put the parameters in scope. |
| FunctionSignature functionParameters = |
| function.computeSignature(compiler); |
| - Link<Node> parameterNodes = node.parameters.nodes; |
| + Link<Node> parameterNodes = (node.parameters === null) |
| + ? const EmptyLink<Node>() : node.parameters.nodes; |
|
kasperl
2012/08/20 12:55:31
4 space indent is common.
ahe
2012/08/20 13:26:17
Done.
|
| functionParameters.forEachParameter((Element element) { |
| if (element == functionParameters.optionalParameters.head) { |
| NodeList nodes = parameterNodes.head; |
| @@ -2254,14 +2255,35 @@ class SignatureResolver extends CommonResolverVisitor<Element> { |
| Node returnNode, |
| Element element) { |
| SignatureResolver visitor = new SignatureResolver(compiler, element); |
| - LinkBuilder<Element> parametersBuilder = |
| + Link<Element> parameters = const EmptyLink<Element>(); |
| + int requiredParameterCount = 0; |
| + if (formalParameters === null) { |
| + if (!element.isGetter()) { |
| + compiler.reportMessage(compiler.spanFromElement(element), |
| + MessageKind.MISSING_FORMALS.error([]), |
| + api.Diagnostic.ERROR); |
| + } |
| + } else { |
| + if (element.isGetter()) { |
| + if (!element.getLibrary().isPlatformLibrary) { |
| + // TODO(ahe): Remove the isPlatformLibrary check. |
| + if (formalParameters.getEndToken().next.stringValue !== 'native') { |
| + // TODO(ahe): Remove the check for native keyword. |
| + compiler.reportMessage(compiler.spanFromNode(formalParameters), |
| + MessageKind.EXTRA_FORMALS.error([]), |
| + api.Diagnostic.WARNING); |
| + } |
| + } |
| + } |
| + LinkBuilder<Element> parametersBuilder = |
| visitor.analyzeNodes(formalParameters.nodes); |
| - Link<Element> parameters = parametersBuilder.toLink(); |
| - Type returnType = |
| - compiler.resolveTypeAnnotation(element, returnNode); |
| + requiredParameterCount = parametersBuilder.length; |
| + parameters = parametersBuilder.toLink(); |
| + } |
| + Type returnType = compiler.resolveTypeAnnotation(element, returnNode); |
| return new FunctionSignature(parameters, |
| visitor.optionalParameters, |
| - parametersBuilder.length, |
| + requiredParameterCount, |
| visitor.optionalParameterCount, |
| returnType); |
| } |