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

Unified Diff: compiler/java/com/google/dart/compiler/resolver/Resolver.java

Issue 9235015: Update map literal syntax to expect only one type parameter (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 11 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: compiler/java/com/google/dart/compiler/resolver/Resolver.java
diff --git a/compiler/java/com/google/dart/compiler/resolver/Resolver.java b/compiler/java/com/google/dart/compiler/resolver/Resolver.java
index c1962ba8d19031187b1d91ea9cdec5e986feb7c1..f798fa118edd878b563d35a8cfe026e874c5509f 100644
--- a/compiler/java/com/google/dart/compiler/resolver/Resolver.java
+++ b/compiler/java/com/google/dart/compiler/resolver/Resolver.java
@@ -5,6 +5,7 @@
package com.google.dart.compiler.resolver;
import com.google.common.annotations.VisibleForTesting;
+import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import com.google.dart.compiler.DartCompilationPhase;
import com.google.dart.compiler.DartCompilerContext;
@@ -1606,7 +1607,34 @@ public class Resolver {
@Override
public Element visitMapLiteral(DartMapLiteral node) {
- List<DartTypeNode> typeArgs = node.getTypeArguments();
+ List<DartTypeNode> originalTypeArgs = node.getTypeArguments();
+ List<DartTypeNode> typeArgs = Lists.newArrayList();
+ DartTypeNode implicitKey = new DartTypeNode(
+ new DartIdentifier("String"));
+ switch (originalTypeArgs.size()) {
+ case 1:
+ typeArgs.add(implicitKey);
+ typeArgs.addAll(originalTypeArgs);
+ break;
+ case 2:
+ // Old (pre spec 0.6) map specification
+ // TODO(zundel): remove this case after a while (added on 24 Jan 2012)
+ typeArgs.add(implicitKey);
+ typeArgs.add(originalTypeArgs.get(1));
+ topLevelContext.onError(originalTypeArgs.get(0), ResolverErrorCode.DEPRECATED_MAP_LITERAL_SYNTAX);
+ break;
+ default:
+ topLevelContext.onError(node, ResolverErrorCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS,
+ defaultLiteralMapType,
+ originalTypeArgs.size(), 1);
+ // fall through
+ case 0:
+ typeArgs.add(implicitKey);
+ DartTypeNode implicitValue = new DartTypeNode(new DartIdentifier("Dynamic"));
+ typeArgs.add(implicitValue);
+ break;
+ }
+
InterfaceType type =
topLevelContext.instantiateParameterizedType(
defaultLiteralMapType.getElement(),

Powered by Google App Engine
This is Rietveld 408576698