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

Unified Diff: dart/lib/compiler/implementation/resolver.dart

Issue 10831332: Support new getter syntax. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 8 years, 4 months 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: 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);
}

Powered by Google App Engine
This is Rietveld 408576698