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

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

Issue 2070493003: Revert "Remove Registry from registerMetadataConstant" and "Serialize metadata" (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 4 years, 6 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.elements; 5 library dart2js.serialization.elements;
6 6
7 import '../common.dart'; 7 import '../common.dart';
8 import '../constants/constructors.dart'; 8 import '../constants/constructors.dart';
9 import '../constants/expressions.dart'; 9 import '../constants/expressions.dart';
10 import '../dart_types.dart'; 10 import '../dart_types.dart';
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 if (position.uri != element.compilationUnit.script.resourceUri) { 113 if (position.uri != element.compilationUnit.script.resourceUri) {
114 encoder.setUri(Key.URI, element.library.canonicalUri, position.uri); 114 encoder.setUri(Key.URI, element.library.canonicalUri, position.uri);
115 } 115 }
116 int length = position.end - position.begin; 116 int length = position.end - position.begin;
117 if (element.name.length != length) { 117 if (element.name.length != length) {
118 encoder.setInt(Key.LENGTH, length); 118 encoder.setInt(Key.LENGTH, length);
119 } 119 }
120 } 120 }
121 } 121 }
122 122
123 /// Serialize the metadata of [element] into [encoder].
124 static void serializeMetadata(Element element, ObjectEncoder encoder) {
125 if (element.metadata.isNotEmpty) {
126 ListEncoder list = encoder.createList(Key.METADATA);
127 for (MetadataAnnotation metadata in element.metadata) {
128 ObjectEncoder object = list.createObject();
129 object.setElement(Key.ELEMENT, metadata.annotatedElement);
130 SourceSpan sourcePosition = metadata.sourcePosition;
131 // TODO(johnniwinther): What is the base URI here?
132 object.setUri(Key.URI, sourcePosition.uri, sourcePosition.uri);
133 object.setInt(Key.OFFSET, sourcePosition.begin);
134 object.setInt(Key.LENGTH, sourcePosition.end - sourcePosition.begin);
135 object.setConstant(Key.CONSTANT, metadata.constant);
136 }
137 }
138 }
139
140 /// Serialize the parent relation for [element] into [encoder], i.e library, 123 /// Serialize the parent relation for [element] into [encoder], i.e library,
141 /// enclosing class, and compilation unit references. 124 /// enclosing class, and compilation unit references.
142 static void serializeParentRelation(Element element, ObjectEncoder encoder) { 125 static void serializeParentRelation(Element element, ObjectEncoder encoder) {
143 if (element.enclosingClass != null) { 126 if (element.enclosingClass != null) {
144 encoder.setElement(Key.CLASS, element.enclosingClass); 127 encoder.setElement(Key.CLASS, element.enclosingClass);
145 if (element.enclosingClass.declaration.compilationUnit != 128 if (element.enclosingClass.declaration.compilationUnit !=
146 element.compilationUnit) { 129 element.compilationUnit) {
147 encoder.setElement(Key.COMPILATION_UNIT, element.compilationUnit); 130 encoder.setElement(Key.COMPILATION_UNIT, element.compilationUnit);
148 } 131 }
149 } else { 132 } else {
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
235 } 218 }
236 219
237 static List<Element> getExportedElements(LibraryElement element) { 220 static List<Element> getExportedElements(LibraryElement element) {
238 Set<Element> exportedElements = new Set<Element>(); 221 Set<Element> exportedElements = new Set<Element>();
239 element.forEachExport(SerializerUtil.flattenElements(exportedElements)); 222 element.forEachExport(SerializerUtil.flattenElements(exportedElements));
240 return exportedElements.toList(); 223 return exportedElements.toList();
241 } 224 }
242 225
243 void serialize(LibraryElement element, ObjectEncoder encoder, 226 void serialize(LibraryElement element, ObjectEncoder encoder,
244 SerializedElementKind kind) { 227 SerializedElementKind kind) {
245 SerializerUtil.serializeMetadata(element, encoder);
246 encoder.setUri( 228 encoder.setUri(
247 Key.CANONICAL_URI, element.canonicalUri, element.canonicalUri); 229 Key.CANONICAL_URI, element.canonicalUri, element.canonicalUri);
248 encoder.setString(Key.LIBRARY_NAME, element.libraryName); 230 encoder.setString(Key.LIBRARY_NAME, element.libraryName);
249 SerializerUtil.serializeMembers(getMembers(element), encoder); 231 SerializerUtil.serializeMembers(getMembers(element), encoder);
250 encoder.setElement(Key.COMPILATION_UNIT, element.entryCompilationUnit); 232 encoder.setElement(Key.COMPILATION_UNIT, element.entryCompilationUnit);
251 encoder.setElements(Key.COMPILATION_UNITS, getCompilationUnits(element)); 233 encoder.setElements(Key.COMPILATION_UNITS, getCompilationUnits(element));
252 encoder.setElements(Key.IMPORTS, getImports(element)); 234 encoder.setElements(Key.IMPORTS, getImports(element));
253 encoder.setElements(Key.EXPORTS, element.exports); 235 encoder.setElements(Key.EXPORTS, element.exports);
254 236
255 encoder.setElements(Key.IMPORT_SCOPE, getImportedElements(element)); 237 encoder.setElements(Key.IMPORT_SCOPE, getImportedElements(element));
256 238
257 encoder.setElements(Key.EXPORT_SCOPE, getExportedElements(element)); 239 encoder.setElements(Key.EXPORT_SCOPE, getExportedElements(element));
258 } 240 }
259 } 241 }
260 242
261 class CompilationUnitSerializer implements ElementSerializer { 243 class CompilationUnitSerializer implements ElementSerializer {
262 const CompilationUnitSerializer(); 244 const CompilationUnitSerializer();
263 245
264 SerializedElementKind getSerializedKind(Element element) { 246 SerializedElementKind getSerializedKind(Element element) {
265 if (element.isCompilationUnit) { 247 if (element.isCompilationUnit) {
266 return SerializedElementKind.COMPILATION_UNIT; 248 return SerializedElementKind.COMPILATION_UNIT;
267 } 249 }
268 return null; 250 return null;
269 } 251 }
270 252
271 void serialize(CompilationUnitElement element, ObjectEncoder encoder, 253 void serialize(CompilationUnitElement element, ObjectEncoder encoder,
272 SerializedElementKind kind) { 254 SerializedElementKind kind) {
273 SerializerUtil.serializeMetadata(element, encoder);
274 encoder.setElement(Key.LIBRARY, element.library); 255 encoder.setElement(Key.LIBRARY, element.library);
275 encoder.setUri( 256 encoder.setUri(
276 Key.URI, element.library.canonicalUri, element.script.resourceUri); 257 Key.URI, element.library.canonicalUri, element.script.resourceUri);
277 List<Element> elements = <Element>[]; 258 List<Element> elements = <Element>[];
278 element.forEachLocalMember((e) { 259 element.forEachLocalMember((e) {
279 if (!element.isPatch) { 260 if (!element.isPatch) {
280 elements.add(e); 261 elements.add(e);
281 } 262 }
282 }); 263 });
283 encoder.setElements(Key.ELEMENTS, elements); 264 encoder.setElements(Key.ELEMENTS, elements);
(...skipping 27 matching lines...) Expand all
311 if (!member.isPatch) { 292 if (!member.isPatch) {
312 members.add(member); 293 members.add(member);
313 } 294 }
314 }); 295 });
315 } 296 }
316 return members; 297 return members;
317 } 298 }
318 299
319 void serialize( 300 void serialize(
320 ClassElement element, ObjectEncoder encoder, SerializedElementKind kind) { 301 ClassElement element, ObjectEncoder encoder, SerializedElementKind kind) {
321 SerializerUtil.serializeMetadata(element, encoder);
322 encoder.setElement(Key.LIBRARY, element.library); 302 encoder.setElement(Key.LIBRARY, element.library);
323 encoder.setElement(Key.COMPILATION_UNIT, element.compilationUnit); 303 encoder.setElement(Key.COMPILATION_UNIT, element.compilationUnit);
324 encoder.setString(Key.NAME, element.name); 304 encoder.setString(Key.NAME, element.name);
325 SerializerUtil.serializePosition(element, encoder); 305 SerializerUtil.serializePosition(element, encoder);
326 encoder.setTypes(Key.TYPE_VARIABLES, element.typeVariables); 306 encoder.setTypes(Key.TYPE_VARIABLES, element.typeVariables);
327 encoder.setBool(Key.IS_ABSTRACT, element.isAbstract); 307 encoder.setBool(Key.IS_ABSTRACT, element.isAbstract);
328 SerializerUtil.serializeMembers(getMembers(element), encoder); 308 SerializerUtil.serializeMembers(getMembers(element), encoder);
329 encoder.setBool(Key.IS_PROXY, element.isProxy); 309 encoder.setBool(Key.IS_PROXY, element.isProxy);
330 encoder.setBool(Key.IS_INJECTED, element.isInjected);
331 if (kind == SerializedElementKind.ENUM) { 310 if (kind == SerializedElementKind.ENUM) {
332 EnumClassElement enumClass = element; 311 EnumClassElement enumClass = element;
333 encoder.setElements(Key.FIELDS, enumClass.enumValues); 312 encoder.setElements(Key.FIELDS, enumClass.enumValues);
334 } 313 }
335 if (element.isObject) return; 314 if (element.isObject) return;
336 315
337 List<InterfaceType> mixins = <InterfaceType>[]; 316 List<InterfaceType> mixins = <InterfaceType>[];
338 ClassElement superclass = element.superclass; 317 ClassElement superclass = element.superclass;
339 while (superclass.isUnnamedMixinApplication) { 318 while (superclass.isUnnamedMixinApplication) {
340 MixinApplicationElement mixinElement = superclass; 319 MixinApplicationElement mixinElement = superclass;
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
382 } 361 }
383 return null; 362 return null;
384 } 363 }
385 364
386 void serialize(ConstructorElement element, ObjectEncoder encoder, 365 void serialize(ConstructorElement element, ObjectEncoder encoder,
387 SerializedElementKind kind) { 366 SerializedElementKind kind) {
388 SerializerUtil.serializeParentRelation(element, encoder); 367 SerializerUtil.serializeParentRelation(element, encoder);
389 if (kind == SerializedElementKind.FORWARDING_CONSTRUCTOR) { 368 if (kind == SerializedElementKind.FORWARDING_CONSTRUCTOR) {
390 encoder.setElement(Key.ELEMENT, element.definingConstructor); 369 encoder.setElement(Key.ELEMENT, element.definingConstructor);
391 } else { 370 } else {
392 SerializerUtil.serializeMetadata(element, encoder);
393 encoder.setType(Key.TYPE, element.type); 371 encoder.setType(Key.TYPE, element.type);
394 encoder.setString(Key.NAME, element.name); 372 encoder.setString(Key.NAME, element.name);
395 SerializerUtil.serializePosition(element, encoder); 373 SerializerUtil.serializePosition(element, encoder);
396 SerializerUtil.serializeParameters(element, encoder); 374 SerializerUtil.serializeParameters(element, encoder);
397 encoder.setBool(Key.IS_CONST, element.isConst); 375 encoder.setBool(Key.IS_CONST, element.isConst);
398 encoder.setBool(Key.IS_EXTERNAL, element.isExternal); 376 encoder.setBool(Key.IS_EXTERNAL, element.isExternal);
399 encoder.setBool(Key.IS_INJECTED, element.isInjected);
400 if (element.isConst && !element.isFromEnvironmentConstructor) { 377 if (element.isConst && !element.isFromEnvironmentConstructor) {
401 ConstantConstructor constantConstructor = element.constantConstructor; 378 ConstantConstructor constantConstructor = element.constantConstructor;
402 ObjectEncoder constantEncoder = encoder.createObject(Key.CONSTRUCTOR); 379 ObjectEncoder constantEncoder = encoder.createObject(Key.CONSTRUCTOR);
403 const ConstantConstructorSerializer() 380 const ConstantConstructorSerializer()
404 .visit(constantConstructor, constantEncoder); 381 .visit(constantConstructor, constantEncoder);
405 } 382 }
406 if (kind == SerializedElementKind.GENERATIVE_CONSTRUCTOR) { 383 if (kind == SerializedElementKind.GENERATIVE_CONSTRUCTOR) {
407 encoder.setBool(Key.IS_REDIRECTING, element.isRedirectingGenerative); 384 encoder.setBool(Key.IS_REDIRECTING, element.isRedirectingGenerative);
408 } 385 }
409 encoder.setElement(Key.EFFECTIVE_TARGET, element.effectiveTarget); 386 encoder.setElement(Key.EFFECTIVE_TARGET, element.effectiveTarget);
(...skipping 25 matching lines...) Expand all
435 return SerializedElementKind.STATIC_FIELD; 412 return SerializedElementKind.STATIC_FIELD;
436 } 413 }
437 if (element.isInstanceMember) return SerializedElementKind.INSTANCE_FIELD; 414 if (element.isInstanceMember) return SerializedElementKind.INSTANCE_FIELD;
438 } 415 }
439 return null; 416 return null;
440 } 417 }
441 418
442 void serialize( 419 void serialize(
443 FieldElement element, ObjectEncoder encoder, SerializedElementKind kind) { 420 FieldElement element, ObjectEncoder encoder, SerializedElementKind kind) {
444 encoder.setString(Key.NAME, element.name); 421 encoder.setString(Key.NAME, element.name);
445 SerializerUtil.serializeMetadata(element, encoder);
446 SerializerUtil.serializePosition(element, encoder); 422 SerializerUtil.serializePosition(element, encoder);
447 encoder.setType(Key.TYPE, element.type); 423 encoder.setType(Key.TYPE, element.type);
448 encoder.setBool(Key.IS_FINAL, element.isFinal); 424 encoder.setBool(Key.IS_FINAL, element.isFinal);
449 encoder.setBool(Key.IS_CONST, element.isConst); 425 encoder.setBool(Key.IS_CONST, element.isConst);
450 encoder.setBool(Key.IS_INJECTED, element.isInjected);
451 ConstantExpression constant = element.constant; 426 ConstantExpression constant = element.constant;
452 if (constant != null) { 427 if (constant != null) {
453 encoder.setConstant(Key.CONSTANT, constant); 428 encoder.setConstant(Key.CONSTANT, constant);
454 } 429 }
455 SerializerUtil.serializeParentRelation(element, encoder); 430 SerializerUtil.serializeParentRelation(element, encoder);
456 if (element is EnumConstantElement) { 431 if (element is EnumConstantElement) {
457 EnumConstantElement enumConstant = element; 432 EnumConstantElement enumConstant = element;
458 encoder.setInt(Key.INDEX, enumConstant.index); 433 encoder.setInt(Key.INDEX, enumConstant.index);
459 } 434 }
460 } 435 }
(...skipping 26 matching lines...) Expand all
487 if (element.isInstanceMember) { 462 if (element.isInstanceMember) {
488 return SerializedElementKind.INSTANCE_SETTER; 463 return SerializedElementKind.INSTANCE_SETTER;
489 } 464 }
490 } 465 }
491 return null; 466 return null;
492 } 467 }
493 468
494 void serialize(FunctionElement element, ObjectEncoder encoder, 469 void serialize(FunctionElement element, ObjectEncoder encoder,
495 SerializedElementKind kind) { 470 SerializedElementKind kind) {
496 encoder.setString(Key.NAME, element.name); 471 encoder.setString(Key.NAME, element.name);
497 SerializerUtil.serializeMetadata(element, encoder);
498 SerializerUtil.serializePosition(element, encoder); 472 SerializerUtil.serializePosition(element, encoder);
499 SerializerUtil.serializeParameters(element, encoder); 473 SerializerUtil.serializeParameters(element, encoder);
500 encoder.setType(Key.TYPE, element.type); 474 encoder.setType(Key.TYPE, element.type);
501 if (element.isFunction) { 475 if (element.isFunction) {
502 encoder.setBool(Key.IS_OPERATOR, element.isOperator); 476 encoder.setBool(Key.IS_OPERATOR, element.isOperator);
503 encoder.setEnum(Key.ASYNC_MARKER, element.asyncMarker); 477 encoder.setEnum(Key.ASYNC_MARKER, element.asyncMarker);
504 } 478 }
505 SerializerUtil.serializeParentRelation(element, encoder); 479 SerializerUtil.serializeParentRelation(element, encoder);
506 encoder.setBool(Key.IS_EXTERNAL, element.isExternal); 480 encoder.setBool(Key.IS_EXTERNAL, element.isExternal);
507 encoder.setBool(Key.IS_ABSTRACT, element.isAbstract); 481 encoder.setBool(Key.IS_ABSTRACT, element.isAbstract);
508 encoder.setBool(Key.IS_INJECTED, element.isInjected);
509 if (element.isLocal) { 482 if (element.isLocal) {
510 LocalFunctionElement localFunction = element; 483 LocalFunctionElement localFunction = element;
511 encoder.setElement( 484 encoder.setElement(
512 Key.EXECUTABLE_CONTEXT, localFunction.executableContext); 485 Key.EXECUTABLE_CONTEXT, localFunction.executableContext);
513 } 486 }
514 } 487 }
515 } 488 }
516 489
517 class TypedefSerializer implements ElementSerializer { 490 class TypedefSerializer implements ElementSerializer {
518 const TypedefSerializer(); 491 const TypedefSerializer();
519 492
520 SerializedElementKind getSerializedKind(Element element) { 493 SerializedElementKind getSerializedKind(Element element) {
521 if (element.isTypedef) { 494 if (element.isTypedef) {
522 return SerializedElementKind.TYPEDEF; 495 return SerializedElementKind.TYPEDEF;
523 } 496 }
524 return null; 497 return null;
525 } 498 }
526 499
527 void serialize(TypedefElement element, ObjectEncoder encoder, 500 void serialize(TypedefElement element, ObjectEncoder encoder,
528 SerializedElementKind kind) { 501 SerializedElementKind kind) {
529 encoder.setString(Key.NAME, element.name); 502 encoder.setString(Key.NAME, element.name);
530 SerializerUtil.serializeMetadata(element, encoder);
531 SerializerUtil.serializePosition(element, encoder); 503 SerializerUtil.serializePosition(element, encoder);
532 encoder.setType(Key.ALIAS, element.alias); 504 encoder.setType(Key.ALIAS, element.alias);
533 encoder.setElement(Key.LIBRARY, element.library); 505 encoder.setElement(Key.LIBRARY, element.library);
534 encoder.setTypes(Key.TYPE_VARIABLES, element.typeVariables); 506 encoder.setTypes(Key.TYPE_VARIABLES, element.typeVariables);
535 encoder.setElement(Key.COMPILATION_UNIT, element.compilationUnit); 507 encoder.setElement(Key.COMPILATION_UNIT, element.compilationUnit);
536 } 508 }
537 } 509 }
538 510
539 class TypeVariableSerializer implements ElementSerializer { 511 class TypeVariableSerializer implements ElementSerializer {
540 const TypeVariableSerializer(); 512 const TypeVariableSerializer();
541 513
542 SerializedElementKind getSerializedKind(Element element) { 514 SerializedElementKind getSerializedKind(Element element) {
543 if (element.isTypeVariable) { 515 if (element.isTypeVariable) {
544 return SerializedElementKind.TYPEVARIABLE; 516 return SerializedElementKind.TYPEVARIABLE;
545 } 517 }
546 return null; 518 return null;
547 } 519 }
548 520
549 void serialize(TypeVariableElement element, ObjectEncoder encoder, 521 void serialize(TypeVariableElement element, ObjectEncoder encoder,
550 SerializedElementKind kind) { 522 SerializedElementKind kind) {
551 encoder.setElement(Key.TYPE_DECLARATION, element.typeDeclaration); 523 encoder.setElement(Key.TYPE_DECLARATION, element.typeDeclaration);
552 encoder.setString(Key.NAME, element.name); 524 encoder.setString(Key.NAME, element.name);
553 SerializerUtil.serializeMetadata(element, encoder);
554 SerializerUtil.serializePosition(element, encoder); 525 SerializerUtil.serializePosition(element, encoder);
555 encoder.setType(Key.TYPE, element.type); 526 encoder.setType(Key.TYPE, element.type);
556 encoder.setInt(Key.INDEX, element.index); 527 encoder.setInt(Key.INDEX, element.index);
557 encoder.setType(Key.BOUND, element.bound); 528 encoder.setType(Key.BOUND, element.bound);
558 } 529 }
559 } 530 }
560 531
561 class ParameterSerializer implements ElementSerializer { 532 class ParameterSerializer implements ElementSerializer {
562 const ParameterSerializer(); 533 const ParameterSerializer();
563 534
564 SerializedElementKind getSerializedKind(Element element) { 535 SerializedElementKind getSerializedKind(Element element) {
565 if (element.isParameter) { 536 if (element.isParameter) {
566 return SerializedElementKind.PARAMETER; 537 return SerializedElementKind.PARAMETER;
567 } else if (element.isInitializingFormal) { 538 } else if (element.isInitializingFormal) {
568 return SerializedElementKind.INITIALIZING_FORMAL; 539 return SerializedElementKind.INITIALIZING_FORMAL;
569 } 540 }
570 return null; 541 return null;
571 } 542 }
572 543
573 void serialize(ParameterElement element, ObjectEncoder encoder, 544 void serialize(ParameterElement element, ObjectEncoder encoder,
574 SerializedElementKind kind) { 545 SerializedElementKind kind) {
575 encoder.setElement(Key.FUNCTION, element.functionDeclaration); 546 encoder.setElement(Key.FUNCTION, element.functionDeclaration);
576 encoder.setString(Key.NAME, element.name); 547 encoder.setString(Key.NAME, element.name);
577 SerializerUtil.serializeMetadata(element, encoder);
578 SerializerUtil.serializePosition(element, encoder); 548 SerializerUtil.serializePosition(element, encoder);
579 encoder.setType(Key.TYPE, element.type); 549 encoder.setType(Key.TYPE, element.type);
580 encoder.setBool(Key.IS_OPTIONAL, element.isOptional); 550 encoder.setBool(Key.IS_OPTIONAL, element.isOptional);
581 encoder.setBool(Key.IS_NAMED, element.isNamed); 551 encoder.setBool(Key.IS_NAMED, element.isNamed);
582 encoder.setBool(Key.IS_FINAL, element.isFinal); 552 encoder.setBool(Key.IS_FINAL, element.isFinal);
583 if (element.isOptional) { 553 if (element.isOptional) {
584 encoder.setConstant(Key.CONSTANT, element.constant); 554 encoder.setConstant(Key.CONSTANT, element.constant);
585 } 555 }
586 if (element.isInitializingFormal) { 556 if (element.isInitializingFormal) {
587 InitializingFormalElement initializingFormal = element; 557 InitializingFormalElement initializingFormal = element;
588 encoder.setElement(Key.FIELD, initializingFormal.fieldElement); 558 encoder.setElement(Key.FIELD, initializingFormal.fieldElement);
589 } 559 }
590 } 560 }
591 } 561 }
592 562
593 class LocalVariableSerializer implements ElementSerializer { 563 class LocalVariableSerializer implements ElementSerializer {
594 const LocalVariableSerializer(); 564 const LocalVariableSerializer();
595 565
596 SerializedElementKind getSerializedKind(Element element) { 566 SerializedElementKind getSerializedKind(Element element) {
597 if (element.isVariable) { 567 if (element.isVariable) {
598 return SerializedElementKind.LOCAL_VARIABLE; 568 return SerializedElementKind.LOCAL_VARIABLE;
599 } 569 }
600 return null; 570 return null;
601 } 571 }
602 572
603 void serialize(LocalVariableElement element, ObjectEncoder encoder, 573 void serialize(LocalVariableElement element, ObjectEncoder encoder,
604 SerializedElementKind kind) { 574 SerializedElementKind kind) {
605 encoder.setString(Key.NAME, element.name); 575 encoder.setString(Key.NAME, element.name);
606 SerializerUtil.serializeMetadata(element, encoder);
607 SerializerUtil.serializePosition(element, encoder); 576 SerializerUtil.serializePosition(element, encoder);
608 encoder.setType(Key.TYPE, element.type); 577 encoder.setType(Key.TYPE, element.type);
609 encoder.setBool(Key.IS_FINAL, element.isFinal); 578 encoder.setBool(Key.IS_FINAL, element.isFinal);
610 encoder.setBool(Key.IS_CONST, element.isConst); 579 encoder.setBool(Key.IS_CONST, element.isConst);
611 if (element.isConst) { 580 if (element.isConst) {
612 ConstantExpression constant = element.constant; 581 ConstantExpression constant = element.constant;
613 encoder.setConstant(Key.CONSTANT, constant); 582 encoder.setConstant(Key.CONSTANT, constant);
614 } 583 }
615 encoder.setElement(Key.EXECUTABLE_CONTEXT, element.executableContext); 584 encoder.setElement(Key.EXECUTABLE_CONTEXT, element.executableContext);
616 } 585 }
617 } 586 }
618 587
619 class ImportSerializer implements ElementSerializer { 588 class ImportSerializer implements ElementSerializer {
620 const ImportSerializer(); 589 const ImportSerializer();
621 590
622 SerializedElementKind getSerializedKind(Element element) { 591 SerializedElementKind getSerializedKind(Element element) {
623 if (element.isImport) { 592 if (element.isImport) {
624 return SerializedElementKind.IMPORT; 593 return SerializedElementKind.IMPORT;
625 } 594 }
626 return null; 595 return null;
627 } 596 }
628 597
629 void serialize(ImportElement element, ObjectEncoder encoder, 598 void serialize(ImportElement element, ObjectEncoder encoder,
630 SerializedElementKind kind) { 599 SerializedElementKind kind) {
631 SerializerUtil.serializeMetadata(element, encoder);
632 encoder.setElement(Key.LIBRARY, element.library); 600 encoder.setElement(Key.LIBRARY, element.library);
633 encoder.setElement(Key.COMPILATION_UNIT, element.compilationUnit); 601 encoder.setElement(Key.COMPILATION_UNIT, element.compilationUnit);
634 encoder.setElement(Key.LIBRARY_DEPENDENCY, element.importedLibrary); 602 encoder.setElement(Key.LIBRARY_DEPENDENCY, element.importedLibrary);
635 if (element.prefix != null) { 603 if (element.prefix != null) {
636 encoder.setElement(Key.PREFIX, element.prefix); 604 encoder.setElement(Key.PREFIX, element.prefix);
637 } 605 }
638 encoder.setBool(Key.IS_DEFERRED, element.isDeferred); 606 encoder.setBool(Key.IS_DEFERRED, element.isDeferred);
639 // TODO(johnniwinther): What is the base for the URI? 607 // TODO(johnniwinther): What is the base for the URI?
640 encoder.setUri(Key.URI, element.uri, element.uri); 608 encoder.setUri(Key.URI, element.uri, element.uri);
641 } 609 }
642 } 610 }
643 611
644 class ExportSerializer implements ElementSerializer { 612 class ExportSerializer implements ElementSerializer {
645 const ExportSerializer(); 613 const ExportSerializer();
646 614
647 SerializedElementKind getSerializedKind(Element element) { 615 SerializedElementKind getSerializedKind(Element element) {
648 if (element.isExport) { 616 if (element.isExport) {
649 return SerializedElementKind.EXPORT; 617 return SerializedElementKind.EXPORT;
650 } 618 }
651 return null; 619 return null;
652 } 620 }
653 621
654 void serialize(ExportElement element, ObjectEncoder encoder, 622 void serialize(ExportElement element, ObjectEncoder encoder,
655 SerializedElementKind kind) { 623 SerializedElementKind kind) {
656 SerializerUtil.serializeMetadata(element, encoder);
657 encoder.setElement(Key.LIBRARY, element.library); 624 encoder.setElement(Key.LIBRARY, element.library);
658 encoder.setElement(Key.COMPILATION_UNIT, element.compilationUnit); 625 encoder.setElement(Key.COMPILATION_UNIT, element.compilationUnit);
659 encoder.setElement(Key.LIBRARY_DEPENDENCY, element.exportedLibrary); 626 encoder.setElement(Key.LIBRARY_DEPENDENCY, element.exportedLibrary);
660 // TODO(johnniwinther): What is the base for the URI? 627 // TODO(johnniwinther): What is the base for the URI?
661 encoder.setUri(Key.URI, element.uri, element.uri); 628 encoder.setUri(Key.URI, element.uri, element.uri);
662 } 629 }
663 } 630 }
664 631
665 class PrefixSerializer implements ElementSerializer { 632 class PrefixSerializer implements ElementSerializer {
666 const PrefixSerializer(); 633 const PrefixSerializer();
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
764 return new LocalVariableElementZ(decoder); 731 return new LocalVariableElementZ(decoder);
765 case SerializedElementKind.EXTERNAL_LIBRARY: 732 case SerializedElementKind.EXTERNAL_LIBRARY:
766 case SerializedElementKind.EXTERNAL_LIBRARY_MEMBER: 733 case SerializedElementKind.EXTERNAL_LIBRARY_MEMBER:
767 case SerializedElementKind.EXTERNAL_CLASS_MEMBER: 734 case SerializedElementKind.EXTERNAL_CLASS_MEMBER:
768 case SerializedElementKind.EXTERNAL_CONSTRUCTOR: 735 case SerializedElementKind.EXTERNAL_CONSTRUCTOR:
769 break; 736 break;
770 } 737 }
771 throw new UnsupportedError("Unexpected element kind '${elementKind}."); 738 throw new UnsupportedError("Unexpected element kind '${elementKind}.");
772 } 739 }
773 } 740 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/resolution/resolution.dart ('k') | pkg/compiler/lib/src/serialization/equivalence.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698