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

Side by Side Diff: pkg/compiler/lib/src/serialization/type_serialization.dart

Issue 1859343004: dartfmt pkg/compiler (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 8 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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 library dart2js.serialization.types; 5 library dart2js.serialization.types;
6 6
7 import '../dart_types.dart'; 7 import '../dart_types.dart';
8 import 'serialization.dart'; 8 import 'serialization.dart';
9 import 'keys.dart'; 9 import 'keys.dart';
10 10
11 /// Visitor that serializes a [DartType] by encoding it into an [ObjectEncoder]. 11 /// Visitor that serializes a [DartType] by encoding it into an [ObjectEncoder].
12 /// 12 ///
13 /// This class is called from the [Serializer] when a [DartType] needs 13 /// This class is called from the [Serializer] when a [DartType] needs
14 /// serialization. The [ObjectEncoder] ensures that any [Element], and other 14 /// serialization. The [ObjectEncoder] ensures that any [Element], and other
15 /// [DartType] that the serialized [DartType] depends upon are also serialized. 15 /// [DartType] that the serialized [DartType] depends upon are also serialized.
16 class TypeSerializer extends DartTypeVisitor<dynamic, ObjectEncoder> { 16 class TypeSerializer extends DartTypeVisitor<dynamic, ObjectEncoder> {
17 const TypeSerializer(); 17 const TypeSerializer();
18 18
19 void visitType(DartType type, ObjectEncoder encoder) { 19 void visitType(DartType type, ObjectEncoder encoder) {
20 throw new UnsupportedError('Unsupported type: $type'); 20 throw new UnsupportedError('Unsupported type: $type');
21 } 21 }
22 22
23 void visitVoidType(VoidType type, ObjectEncoder encoder) {} 23 void visitVoidType(VoidType type, ObjectEncoder encoder) {}
24 24
25 void visitTypeVariableType(TypeVariableType type, 25 void visitTypeVariableType(TypeVariableType type, ObjectEncoder encoder) {
26 ObjectEncoder encoder) {
27 encoder.setElement(Key.ELEMENT, type.element); 26 encoder.setElement(Key.ELEMENT, type.element);
28 } 27 }
29 28
30 void visitFunctionType(FunctionType type, 29 void visitFunctionType(FunctionType type, ObjectEncoder encoder) {
31 ObjectEncoder encoder) {
32 // TODO(johnniwinther): Support encoding of `type.element`. 30 // TODO(johnniwinther): Support encoding of `type.element`.
33 encoder.setType(Key.RETURN_TYPE, type.returnType); 31 encoder.setType(Key.RETURN_TYPE, type.returnType);
34 encoder.setTypes(Key.PARAMETER_TYPES, type.parameterTypes); 32 encoder.setTypes(Key.PARAMETER_TYPES, type.parameterTypes);
35 encoder.setTypes( 33 encoder.setTypes(Key.OPTIONAL_PARAMETER_TYPES, type.optionalParameterTypes);
36 Key.OPTIONAL_PARAMETER_TYPES, type.optionalParameterTypes);
37 encoder.setStrings(Key.NAMED_PARAMETERS, type.namedParameters); 34 encoder.setStrings(Key.NAMED_PARAMETERS, type.namedParameters);
38 encoder.setTypes(Key.NAMED_PARAMETER_TYPES, type.namedParameterTypes); 35 encoder.setTypes(Key.NAMED_PARAMETER_TYPES, type.namedParameterTypes);
39 } 36 }
40 37
41 void visitMalformedType(MalformedType type, ObjectEncoder encoder) { 38 void visitMalformedType(MalformedType type, ObjectEncoder encoder) {}
42
43 }
44 39
45 void visitInterfaceType(InterfaceType type, ObjectEncoder encoder) { 40 void visitInterfaceType(InterfaceType type, ObjectEncoder encoder) {
46 encoder.setElement(Key.ELEMENT, type.element); 41 encoder.setElement(Key.ELEMENT, type.element);
47 encoder.setTypes(Key.TYPE_ARGUMENTS, type.typeArguments); 42 encoder.setTypes(Key.TYPE_ARGUMENTS, type.typeArguments);
48 } 43 }
49 44
50 void visitTypedefType(TypedefType type, ObjectEncoder encoder) { 45 void visitTypedefType(TypedefType type, ObjectEncoder encoder) {
51 encoder.setElement(Key.ELEMENT, type.element); 46 encoder.setElement(Key.ELEMENT, type.element);
52 encoder.setTypes(Key.TYPE_ARGUMENTS, type.typeArguments); 47 encoder.setTypes(Key.TYPE_ARGUMENTS, type.typeArguments);
53 } 48 }
54 49
55 void visitDynamicType(DynamicType type, ObjectEncoder encoder) {} 50 void visitDynamicType(DynamicType type, ObjectEncoder encoder) {}
56 } 51 }
57 52
58
59 /// Utility class for deserializing [DartType]s. 53 /// Utility class for deserializing [DartType]s.
60 /// 54 ///
61 /// This is used by the [Deserializer]. 55 /// This is used by the [Deserializer].
62 class TypeDeserializer { 56 class TypeDeserializer {
63
64 /// Deserializes a [DartType] from an [ObjectDecoder]. 57 /// Deserializes a [DartType] from an [ObjectDecoder].
65 /// 58 ///
66 /// The class is called from the [Deserializer] when a [DartType] needs 59 /// The class is called from the [Deserializer] when a [DartType] needs
67 /// deserialization. The [ObjectDecoder] ensures that any [Element], other 60 /// deserialization. The [ObjectDecoder] ensures that any [Element], other
68 /// [DartType] that the deserialized [DartType] depends upon are available. 61 /// [DartType] that the deserialized [DartType] depends upon are available.
69 static DartType deserialize(ObjectDecoder decoder) { 62 static DartType deserialize(ObjectDecoder decoder) {
70 TypeKind typeKind = decoder.getEnum(Key.KIND, TypeKind.values); 63 TypeKind typeKind = decoder.getEnum(Key.KIND, TypeKind.values);
71 switch (typeKind) { 64 switch (typeKind) {
72 case TypeKind.INTERFACE: 65 case TypeKind.INTERFACE:
73 return new InterfaceType( 66 return new InterfaceType(decoder.getElement(Key.ELEMENT),
74 decoder.getElement(Key.ELEMENT),
75 decoder.getTypes(Key.TYPE_ARGUMENTS, isOptional: true)); 67 decoder.getTypes(Key.TYPE_ARGUMENTS, isOptional: true));
76 case TypeKind.FUNCTION: 68 case TypeKind.FUNCTION:
77 // TODO(johnniwinther): Support decoding of `type.element`. 69 // TODO(johnniwinther): Support decoding of `type.element`.
78 return new FunctionType.synthesized( 70 return new FunctionType.synthesized(
79 decoder.getType(Key.RETURN_TYPE), 71 decoder.getType(Key.RETURN_TYPE),
80 decoder.getTypes(Key.PARAMETER_TYPES, isOptional: true), 72 decoder.getTypes(Key.PARAMETER_TYPES, isOptional: true),
81 decoder.getTypes( 73 decoder.getTypes(Key.OPTIONAL_PARAMETER_TYPES, isOptional: true),
82 Key.OPTIONAL_PARAMETER_TYPES, isOptional: true), 74 decoder.getStrings(Key.NAMED_PARAMETERS, isOptional: true),
83 decoder.getStrings( 75 decoder.getTypes(Key.NAMED_PARAMETER_TYPES, isOptional: true));
84 Key.NAMED_PARAMETERS, isOptional: true),
85 decoder.getTypes(
86 Key.NAMED_PARAMETER_TYPES, isOptional: true));
87 case TypeKind.TYPE_VARIABLE: 76 case TypeKind.TYPE_VARIABLE:
88 return new TypeVariableType( 77 return new TypeVariableType(decoder.getElement(Key.ELEMENT));
89 decoder.getElement(Key.ELEMENT));
90 case TypeKind.TYPEDEF: 78 case TypeKind.TYPEDEF:
91 return new TypedefType( 79 return new TypedefType(decoder.getElement(Key.ELEMENT),
92 decoder.getElement(Key.ELEMENT),
93 decoder.getTypes(Key.TYPE_ARGUMENTS, isOptional: true)); 80 decoder.getTypes(Key.TYPE_ARGUMENTS, isOptional: true));
94 case TypeKind.STATEMENT: 81 case TypeKind.STATEMENT:
95 case TypeKind.MALFORMED_TYPE: 82 case TypeKind.MALFORMED_TYPE:
96 throw new UnsupportedError("Unexpected type kind '${typeKind}."); 83 throw new UnsupportedError("Unexpected type kind '${typeKind}.");
97 case TypeKind.DYNAMIC: 84 case TypeKind.DYNAMIC:
98 return const DynamicType(); 85 return const DynamicType();
99 case TypeKind.VOID: 86 case TypeKind.VOID:
100 return const VoidType(); 87 return const VoidType();
101 } 88 }
102 } 89 }
103 } 90 }
104
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/serialization/task.dart ('k') | pkg/compiler/lib/src/serialization/values.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698