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

Side by Side Diff: frog/type.dart

Issue 8681027: Fix bug 578 (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: prereviewed 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
« no previous file with comments | « frog/tree.g.dart ('k') | frog/world.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
None
OLDNEW
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 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 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. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 class Type implements Named, Hashable { 5 class Type extends Element {
6 final String name;
7 bool isTested; 6 bool isTested;
8 7
9 /** 8 /**
10 * For core types (int, String, etc) this is the generated type assertion 9 * For core types (int, String, etc) this is the generated type assertion
11 * function (uses JS "typeof"). This field is null for all other types. 10 * function (uses JS "typeof"). This field is null for all other types.
12 */ 11 */
13 String typeCheckCode; 12 String typeCheckCode;
14 13
15 String _jsname;
16
17 Member _typeMember; 14 Member _typeMember;
18 15
19 /** Stubs used to call into this method dynamically. Lazy initialized. */ 16 /** Stubs used to call into this method dynamically. Lazy initialized. */
20 Map<String, VarMember> varStubs; 17 Map<String, VarMember> varStubs;
21 18
22 /** Cache of [MemberSet]s that have been resolved. */ 19 /** Cache of [MemberSet]s that have been resolved. */
23 Map<String, MemberSet> _resolvedMembers; 20 Map<String, MemberSet> _resolvedMembers;
24 21
25 Type(this.name): isTested = false, _resolvedMembers = {}; 22 Type(String name): isTested = false, _resolvedMembers = {}, super(name, null);
26 23
27 void markUsed() {} 24 void markUsed() {}
28 abstract void genMethod(Member method); 25 abstract void genMethod(Member method);
29 26
30 TypeMember get typeMember() { 27 TypeMember get typeMember() {
31 if (_typeMember == null) { 28 if (_typeMember == null) {
32 _typeMember = new TypeMember(this); 29 _typeMember = new TypeMember(this);
33 } 30 }
34 return _typeMember; 31 return _typeMember;
35 } 32 }
36 33
37 abstract SourceSpan get span();
38
39 abstract Type resolveType(TypeReference node, bool isRequired);
40
41 abstract Type resolveTypeParams(ConcreteType inType); 34 abstract Type resolveTypeParams(ConcreteType inType);
42 35
43 Member getMember(String name) => null; 36 Member getMember(String name) => null;
44 abstract MethodMember getConstructor(String name); 37 abstract MethodMember getConstructor(String name);
45 abstract MethodMember getFactory(Type type, String name); 38 abstract MethodMember getFactory(Type type, String name);
46 abstract Type getOrMakeConcreteType(List<Type> typeArgs); 39 abstract Type getOrMakeConcreteType(List<Type> typeArgs);
47 abstract Map<String, MethodMember> get constructors(); 40 abstract Map<String, MethodMember> get constructors();
48 abstract addDirectSubtype(Type type); 41 abstract addDirectSubtype(Type type);
49 abstract bool get isClass(); 42 abstract bool get isClass();
50 abstract Library get library();
51 Set<Type> get subtypes() => null; 43 Set<Type> get subtypes() => null;
52 44
53 // TODO(jmesserly): rename to isDynamic? 45 // TODO(jmesserly): rename to isDynamic?
54 bool get isVar() => false; 46 bool get isVar() => false;
55 bool get isTop() => false; 47 bool get isTop() => false;
56 48
57 bool get isObject() => false; 49 bool get isObject() => false;
58 bool get isString() => false; 50 bool get isString() => false;
59 bool get isBool() => false; 51 bool get isBool() => false;
60 bool get isFunction() => false; 52 bool get isFunction() => false;
(...skipping 14 matching lines...) Expand all
75 67
76 /** Gets the $call method for a function type. */ 68 /** Gets the $call method for a function type. */
77 MethodMember getCallMethod() => null; 69 MethodMember getCallMethod() => null;
78 70
79 /** These types may not be implemented or extended by user code. */ 71 /** These types may not be implemented or extended by user code. */
80 bool get isClosed() => isString || isBool || isNum || isFunction || isVar; 72 bool get isClosed() => isString || isBool || isNum || isFunction || isVar;
81 73
82 bool get isUsed() => false; 74 bool get isUsed() => false;
83 75
84 bool get isGeneric() => false; 76 bool get isGeneric() => false;
85 bool get isNativeType() => false;
86
87 bool get isNative() => isNativeType; // TODO(jimhug): remove isNativeType.
88 77
89 bool get isHiddenNativeType() => false; 78 bool get isHiddenNativeType() => false;
90 79
91 bool get hasTypeParams() => false; 80 bool get hasTypeParams() => false;
92 81
93 String get typeofName() => null; 82 String get typeofName() => null;
94 83
95 String get jsname() => _jsname == null ? name : _jsname;
96
97 set jsname(String name) => _jsname = name;
98
99 Map<String, Member> get members() => null; 84 Map<String, Member> get members() => null;
100 Definition get definition() => null; 85 Definition get definition() => null;
101 FactoryMap get factories() => null; 86 FactoryMap get factories() => null;
102 87
103 // TODO(jmesserly): should try using a const list instead of null to represent 88 // TODO(jmesserly): should try using a const list instead of null to represent
104 // the absence of type parameters. 89 // the absence of type parameters.
105 Collection<Type> get typeArgsInOrder() => null; 90 Collection<Type> get typeArgsInOrder() => null;
106 DefinedType get genericType() => this; 91 DefinedType get genericType() => this;
107 92
108 // TODO(jmesserly): what should these do for ParameterType? 93 // TODO(jmesserly): what should these do for ParameterType?
109 List<Type> get interfaces() => null; 94 List<Type> get interfaces() => null;
110 Type get parent() => null; 95 Type get parent() => null;
111 96
112 Map<String, Member> getAllMembers() => {}; 97 Map<String, Member> getAllMembers() => {};
113 98
114 int hashCode() => name.hashCode();
115
116 bool _hasNativeSubtypes; 99 bool _hasNativeSubtypes;
117 bool get hasNativeSubtypes() { 100 bool get hasNativeSubtypes() {
118 if (_hasNativeSubtypes == null) { 101 if (_hasNativeSubtypes == null) {
119 _hasNativeSubtypes = subtypes.some((t) => t.isNativeType); 102 _hasNativeSubtypes = subtypes.some((t) => t.isNative);
120 } 103 }
121 return _hasNativeSubtypes; 104 return _hasNativeSubtypes;
122 } 105 }
123 106
124 void _checkOverride(Member member) { 107 void _checkOverride(Member member) {
125 // always look in parents to check that any overloads are legal 108 // always look in parents to check that any overloads are legal
126 var parentMember = _getMemberInParents(member.name); 109 var parentMember = _getMemberInParents(member.name);
127 if (parentMember != null) { 110 if (parentMember != null) {
128 // TODO(jimhug): Ensure that this is only done once. 111 // TODO(jimhug): Ensure that this is only done once.
129 if (!member.isPrivate || member.library == parentMember.library) { 112 if (!member.isPrivate || member.library == parentMember.library) {
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after
447 world.internalError('no constructors on type parameters yet'); 430 world.internalError('no constructors on type parameters yet');
448 } 431 }
449 432
450 Type getOrMakeConcreteType(List<Type> typeArgs) { 433 Type getOrMakeConcreteType(List<Type> typeArgs) {
451 world.internalError('no concrete types of type parameters yet', span); 434 world.internalError('no concrete types of type parameters yet', span);
452 } 435 }
453 436
454 Type resolveTypeParams(ConcreteType inType) { 437 Type resolveTypeParams(ConcreteType inType) {
455 return inType.typeArguments[name]; 438 return inType.typeArguments[name];
456 } 439 }

error: old chunk mismatch

OLDNEW
« no previous file with comments | « frog/tree.g.dart ('k') | frog/world.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698