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

Unified Diff: runtime/lib/literal_map_factory.dart

Issue 8637018: Implement type checking of map literals (issue 221). (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: '' Created 9 years, 1 month 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: runtime/lib/literal_map_factory.dart
===================================================================
--- runtime/lib/literal_map_factory.dart (revision 0)
+++ runtime/lib/literal_map_factory.dart (revision 0)
@@ -0,0 +1,26 @@
+// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+// Immutable map class for compiler generated map literals.
+
+class _LiteralMapFactory {
+ // [elements] contains n key-value pairs. The keys are at position
+ // 2*n, the values at position 2*n+1.
+ factory Map<K, V>.fromLiteral(int location,
+ String value_type,
+ List elements) {
+ var map = new LinkedHashMap<String, V>();
+ var len = elements.length;
+ for (int i = 1; i < len; i += 2) {
+ // The type of the key has been checked in the parser already.
+ if (elements[i] is !V) {
+ TypeError._throwNew(location,
+ elements[i],
+ value_type,
+ "map literal value at index ${i ~/ 2}");
+ }
+ map[elements[i-1]] = elements[i];
srdjan 2011/11/23 03:43:44 space between -> 'i - 1'
regis 2011/11/23 15:51:32 Will do.
+ }
+ return map;
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698