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

Side by Side 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file.
4 // Immutable map class for compiler generated map literals.
5
6 class _LiteralMapFactory {
7 // [elements] contains n key-value pairs. The keys are at position
8 // 2*n, the values at position 2*n+1.
9 factory Map<K, V>.fromLiteral(int location,
10 String value_type,
11 List elements) {
12 var map = new LinkedHashMap<K, V>();
hausner 2011/11/22 18:37:35 Why don't you declare the map as <String, V> ?
regis 2011/11/22 20:15:20 Done.
13 var len = elements.length;
14 for (int i = 1; i < len; i += 2) {
15 // The type of the key has been checked in the parser already.
16 if (elements[i] is !V) {
hausner 2011/11/22 18:37:35 Why do you have to explicitly implement the type c
regis 2011/11/22 20:15:20 Yes, we would get a type error here, but the user
hausner 2011/11/23 15:40:10 At the cost of duplicated type checks? Why not de
regis 2011/11/23 15:51:32 Actually, this code has changed now. See the other
17 TypeError._throwNew(location,
18 elements[i],
19 value_type,
20 "map literal value at index ${i ~/ 2}");
21 }
22 map[elements[i-1]] = elements[i];
23 }
24 return map;
25 }
26 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698