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

Side by Side Diff: pkg/analyzer/lib/src/summary/summarize_elements.dart

Issue 1569033002: Add Element.nameOffset and LibraryElement.nameLength to summaries. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 11 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 serialization.elements; 5 library serialization.elements;
6 6
7 import 'package:analyzer/dart/element/element.dart'; 7 import 'package:analyzer/dart/element/element.dart';
8 import 'package:analyzer/dart/element/type.dart'; 8 import 'package:analyzer/dart/element/type.dart';
9 import 'package:analyzer/src/dart/element/type.dart'; 9 import 'package:analyzer/src/dart/element/type.dart';
10 import 'package:analyzer/src/generated/resolver.dart'; 10 import 'package:analyzer/src/generated/resolver.dart';
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 if (typedef.isPublic) { 198 if (typedef.isPublic) {
199 names.add(encodeUnlinkedPublicName(ctx, 199 names.add(encodeUnlinkedPublicName(ctx,
200 kind: PrelinkedReferenceKind.typedef, 200 kind: PrelinkedReferenceKind.typedef,
201 name: typedef.name, 201 name: typedef.name,
202 numTypeParameters: typedef.typeParameters.length)); 202 numTypeParameters: typedef.typeParameters.length));
203 } 203 }
204 } 204 }
205 if (unitNum == 0) { 205 if (unitNum == 0) {
206 if (libraryElement.name.isNotEmpty) { 206 if (libraryElement.name.isNotEmpty) {
207 b.libraryName = libraryElement.name; 207 b.libraryName = libraryElement.name;
208 b.libraryNameOffset = libraryElement.nameOffset;
209 b.libraryNameLength = libraryElement.nameLength;
208 } 210 }
209 b.publicNamespace = encodeUnlinkedPublicNamespace(ctx, 211 b.publicNamespace = encodeUnlinkedPublicNamespace(ctx,
210 exports: libraryElement.exports.map(serializeExportPublic).toList(), 212 exports: libraryElement.exports.map(serializeExportPublic).toList(),
211 parts: libraryElement.parts 213 parts: libraryElement.parts
212 .map((CompilationUnitElement e) => e.uri) 214 .map((CompilationUnitElement e) => e.uri)
213 .toList(), 215 .toList(),
214 names: names); 216 names: names);
215 b.exports = libraryElement.exports.map(serializeExportNonPublic).toList(); 217 b.exports = libraryElement.exports.map(serializeExportNonPublic).toList();
216 b.imports = libraryElement.imports.map(serializeImport).toList(); 218 b.imports = libraryElement.imports.map(serializeImport).toList();
217 b.parts = libraryElement.parts 219 b.parts = libraryElement.parts
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
300 } 302 }
301 throw new StateError('Unbound type parameter $type'); 303 throw new StateError('Unbound type parameter $type');
302 } 304 }
303 305
304 /** 306 /**
305 * Serialize the given [classElement], creating an [UnlinkedClass]. 307 * Serialize the given [classElement], creating an [UnlinkedClass].
306 */ 308 */
307 UnlinkedClassBuilder serializeClass(ClassElement classElement) { 309 UnlinkedClassBuilder serializeClass(ClassElement classElement) {
308 UnlinkedClassBuilder b = new UnlinkedClassBuilder(ctx); 310 UnlinkedClassBuilder b = new UnlinkedClassBuilder(ctx);
309 b.name = classElement.name; 311 b.name = classElement.name;
312 b.nameOffset = classElement.nameOffset;
310 b.typeParameters = 313 b.typeParameters =
311 classElement.typeParameters.map(serializeTypeParam).toList(); 314 classElement.typeParameters.map(serializeTypeParam).toList();
312 if (classElement.supertype == null) { 315 if (classElement.supertype == null) {
313 b.hasNoSupertype = true; 316 b.hasNoSupertype = true;
314 } else if (!classElement.supertype.isObject) { 317 } else if (!classElement.supertype.isObject) {
315 b.supertype = serializeTypeRef(classElement.supertype, classElement); 318 b.supertype = serializeTypeRef(classElement.supertype, classElement);
316 } 319 }
317 b.mixins = classElement.mixins 320 b.mixins = classElement.mixins
318 .map((InterfaceType t) => serializeTypeRef(t, classElement)) 321 .map((InterfaceType t) => serializeTypeRef(t, classElement))
319 .toList(); 322 .toList();
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
381 * representing the pseudo-type `dynamic`. 384 * representing the pseudo-type `dynamic`.
382 */ 385 */
383 int serializeDynamicReference() => 0; 386 int serializeDynamicReference() => 0;
384 387
385 /** 388 /**
386 * Serialize the given [enumElement], creating an [UnlinkedEnum]. 389 * Serialize the given [enumElement], creating an [UnlinkedEnum].
387 */ 390 */
388 UnlinkedEnumBuilder serializeEnum(ClassElement enumElement) { 391 UnlinkedEnumBuilder serializeEnum(ClassElement enumElement) {
389 UnlinkedEnumBuilder b = new UnlinkedEnumBuilder(ctx); 392 UnlinkedEnumBuilder b = new UnlinkedEnumBuilder(ctx);
390 b.name = enumElement.name; 393 b.name = enumElement.name;
394 b.nameOffset = enumElement.nameOffset;
391 List<UnlinkedEnumValueBuilder> values = <UnlinkedEnumValueBuilder>[]; 395 List<UnlinkedEnumValueBuilder> values = <UnlinkedEnumValueBuilder>[];
392 for (FieldElement field in enumElement.fields) { 396 for (FieldElement field in enumElement.fields) {
393 if (field.isConst && field.type.element == enumElement) { 397 if (field.isConst && field.type.element == enumElement) {
394 values.add(encodeUnlinkedEnumValue(ctx, name: field.name)); 398 values.add(encodeUnlinkedEnumValue(ctx,
399 name: field.name, nameOffset: field.nameOffset));
395 } 400 }
396 } 401 }
397 b.values = values; 402 b.values = values;
398 return b; 403 return b;
399 } 404 }
400 405
401 /** 406 /**
402 * Serialize the given [executableElement], creating an [UnlinkedExecutable]. 407 * Serialize the given [executableElement], creating an [UnlinkedExecutable].
403 */ 408 */
404 UnlinkedExecutableBuilder serializeExecutable( 409 UnlinkedExecutableBuilder serializeExecutable(
405 ExecutableElement executableElement) { 410 ExecutableElement executableElement) {
406 UnlinkedExecutableBuilder b = new UnlinkedExecutableBuilder(ctx); 411 UnlinkedExecutableBuilder b = new UnlinkedExecutableBuilder(ctx);
407 b.name = executableElement.name; 412 b.name = executableElement.name;
413 b.nameOffset = executableElement.nameOffset;
408 if (executableElement is! ConstructorElement && 414 if (executableElement is! ConstructorElement &&
409 !executableElement.type.returnType.isVoid) { 415 !executableElement.type.returnType.isVoid) {
410 b.returnType = serializeTypeRef( 416 b.returnType = serializeTypeRef(
411 executableElement.type.returnType, executableElement); 417 executableElement.type.returnType, executableElement);
412 } 418 }
413 b.typeParameters = 419 b.typeParameters =
414 executableElement.typeParameters.map(serializeTypeParam).toList(); 420 executableElement.typeParameters.map(serializeTypeParam).toList();
415 b.parameters = 421 b.parameters =
416 executableElement.type.parameters.map(serializeParam).toList(); 422 executableElement.type.parameters.map(serializeParam).toList();
417 if (executableElement is PropertyAccessorElement) { 423 if (executableElement is PropertyAccessorElement) {
(...skipping 16 matching lines...) Expand all
434 b.isExternal = executableElement.isExternal; 440 b.isExternal = executableElement.isExternal;
435 return b; 441 return b;
436 } 442 }
437 443
438 /** 444 /**
439 * Serialize the given [exportElement] into an [UnlinkedExportNonPublic]. 445 * Serialize the given [exportElement] into an [UnlinkedExportNonPublic].
440 */ 446 */
441 UnlinkedExportNonPublicBuilder serializeExportNonPublic( 447 UnlinkedExportNonPublicBuilder serializeExportNonPublic(
442 ExportElement exportElement) { 448 ExportElement exportElement) {
443 UnlinkedExportNonPublicBuilder b = new UnlinkedExportNonPublicBuilder(ctx); 449 UnlinkedExportNonPublicBuilder b = new UnlinkedExportNonPublicBuilder(ctx);
450 b.offset = exportElement.nameOffset;
444 b.uriOffset = exportElement.uriOffset; 451 b.uriOffset = exportElement.uriOffset;
445 b.uriEnd = exportElement.uriEnd; 452 b.uriEnd = exportElement.uriEnd;
446 return b; 453 return b;
447 } 454 }
448 455
449 /** 456 /**
450 * Serialize the given [exportElement] into an [UnlinkedExportPublic]. 457 * Serialize the given [exportElement] into an [UnlinkedExportPublic].
451 */ 458 */
452 UnlinkedExportPublicBuilder serializeExportPublic( 459 UnlinkedExportPublicBuilder serializeExportPublic(
453 ExportElement exportElement) { 460 ExportElement exportElement) {
454 UnlinkedExportPublicBuilder b = new UnlinkedExportPublicBuilder(ctx); 461 UnlinkedExportPublicBuilder b = new UnlinkedExportPublicBuilder(ctx);
455 b.uri = exportElement.uri; 462 b.uri = exportElement.uri;
456 b.combinators = exportElement.combinators.map(serializeCombinator).toList(); 463 b.combinators = exportElement.combinators.map(serializeCombinator).toList();
457 return b; 464 return b;
458 } 465 }
459 466
460 /** 467 /**
461 * Serialize the given [importElement] yielding an [UnlinkedImportBuilder]. 468 * Serialize the given [importElement] yielding an [UnlinkedImportBuilder].
462 * Also, add pre-linked information about it to the [prelinkedImports] list. 469 * Also, add pre-linked information about it to the [prelinkedImports] list.
463 */ 470 */
464 UnlinkedImportBuilder serializeImport(ImportElement importElement) { 471 UnlinkedImportBuilder serializeImport(ImportElement importElement) {
465 UnlinkedImportBuilder b = new UnlinkedImportBuilder(ctx); 472 UnlinkedImportBuilder b = new UnlinkedImportBuilder(ctx);
466 b.isDeferred = importElement.isDeferred; 473 b.isDeferred = importElement.isDeferred;
467 b.offset = importElement.nameOffset; 474 b.offset = importElement.nameOffset;
468 b.combinators = importElement.combinators.map(serializeCombinator).toList(); 475 b.combinators = importElement.combinators.map(serializeCombinator).toList();
469 if (importElement.prefix != null) { 476 if (importElement.prefix != null) {
470 b.prefixReference = serializePrefix(importElement.prefix); 477 b.prefixReference = serializePrefix(importElement.prefix);
478 b.prefixOffset = importElement.prefix.nameOffset;
471 } 479 }
472 if (importElement.isSynthetic) { 480 if (importElement.isSynthetic) {
473 b.isImplicit = true; 481 b.isImplicit = true;
474 } else { 482 } else {
475 b.uri = importElement.uri; 483 b.uri = importElement.uri;
476 b.uriOffset = importElement.uriOffset; 484 b.uriOffset = importElement.uriOffset;
477 b.uriEnd = importElement.uriEnd; 485 b.uriEnd = importElement.uriEnd;
478 } 486 }
479 addTransitiveExportClosure(importElement.importedLibrary); 487 addTransitiveExportClosure(importElement.importedLibrary);
480 prelinkedImports.add(serializeDependency(importElement.importedLibrary)); 488 prelinkedImports.add(serializeDependency(importElement.importedLibrary));
(...skipping 20 matching lines...) Expand all
501 } 509 }
502 510
503 /** 511 /**
504 * Serialize the given [parameter] into an [UnlinkedParam]. 512 * Serialize the given [parameter] into an [UnlinkedParam].
505 */ 513 */
506 UnlinkedParamBuilder serializeParam(ParameterElement parameter, 514 UnlinkedParamBuilder serializeParam(ParameterElement parameter,
507 [Element context]) { 515 [Element context]) {
508 context ??= parameter; 516 context ??= parameter;
509 UnlinkedParamBuilder b = new UnlinkedParamBuilder(ctx); 517 UnlinkedParamBuilder b = new UnlinkedParamBuilder(ctx);
510 b.name = parameter.name; 518 b.name = parameter.name;
519 b.nameOffset = parameter.nameOffset;
511 switch (parameter.parameterKind) { 520 switch (parameter.parameterKind) {
512 case ParameterKind.REQUIRED: 521 case ParameterKind.REQUIRED:
513 b.kind = UnlinkedParamKind.required; 522 b.kind = UnlinkedParamKind.required;
514 break; 523 break;
515 case ParameterKind.POSITIONAL: 524 case ParameterKind.POSITIONAL:
516 b.kind = UnlinkedParamKind.positional; 525 b.kind = UnlinkedParamKind.positional;
517 break; 526 break;
518 case ParameterKind.NAMED: 527 case ParameterKind.NAMED:
519 b.kind = UnlinkedParamKind.named; 528 b.kind = UnlinkedParamKind.named;
520 break; 529 break;
(...skipping 29 matching lines...) Expand all
550 }); 559 });
551 } 560 }
552 561
553 /** 562 /**
554 * Serialize the given [typedefElement], creating an [UnlinkedTypedef]. 563 * Serialize the given [typedefElement], creating an [UnlinkedTypedef].
555 */ 564 */
556 UnlinkedTypedefBuilder serializeTypedef( 565 UnlinkedTypedefBuilder serializeTypedef(
557 FunctionTypeAliasElement typedefElement) { 566 FunctionTypeAliasElement typedefElement) {
558 UnlinkedTypedefBuilder b = new UnlinkedTypedefBuilder(ctx); 567 UnlinkedTypedefBuilder b = new UnlinkedTypedefBuilder(ctx);
559 b.name = typedefElement.name; 568 b.name = typedefElement.name;
569 b.nameOffset = typedefElement.nameOffset;
560 b.typeParameters = 570 b.typeParameters =
561 typedefElement.typeParameters.map(serializeTypeParam).toList(); 571 typedefElement.typeParameters.map(serializeTypeParam).toList();
562 if (!typedefElement.returnType.isVoid) { 572 if (!typedefElement.returnType.isVoid) {
563 b.returnType = 573 b.returnType =
564 serializeTypeRef(typedefElement.returnType, typedefElement); 574 serializeTypeRef(typedefElement.returnType, typedefElement);
565 } 575 }
566 b.parameters = typedefElement.parameters.map(serializeParam).toList(); 576 b.parameters = typedefElement.parameters.map(serializeParam).toList();
567 return b; 577 return b;
568 } 578 }
569 579
570 /** 580 /**
571 * Serialize the given [typeParameter] into an [UnlinkedTypeParam]. 581 * Serialize the given [typeParameter] into an [UnlinkedTypeParam].
572 */ 582 */
573 UnlinkedTypeParamBuilder serializeTypeParam( 583 UnlinkedTypeParamBuilder serializeTypeParam(
574 TypeParameterElement typeParameter) { 584 TypeParameterElement typeParameter) {
575 UnlinkedTypeParamBuilder b = new UnlinkedTypeParamBuilder(ctx); 585 UnlinkedTypeParamBuilder b = new UnlinkedTypeParamBuilder(ctx);
576 b.name = typeParameter.name; 586 b.name = typeParameter.name;
587 b.nameOffset = typeParameter.nameOffset;
577 if (typeParameter.bound != null) { 588 if (typeParameter.bound != null) {
578 b.bound = serializeTypeRef(typeParameter.bound, typeParameter); 589 b.bound = serializeTypeRef(typeParameter.bound, typeParameter);
579 } 590 }
580 return b; 591 return b;
581 } 592 }
582 593
583 /** 594 /**
584 * Serialize the given [type] into an [UnlinkedTypeRef]. 595 * Serialize the given [type] into an [UnlinkedTypeRef].
585 */ 596 */
586 UnlinkedTypeRefBuilder serializeTypeRef(DartType type, Element context) { 597 UnlinkedTypeRefBuilder serializeTypeRef(DartType type, Element context) {
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
657 } 668 }
658 return unresolvedReferenceIndex; 669 return unresolvedReferenceIndex;
659 } 670 }
660 671
661 /** 672 /**
662 * Serialize the given [variable], creating an [UnlinkedVariable]. 673 * Serialize the given [variable], creating an [UnlinkedVariable].
663 */ 674 */
664 UnlinkedVariableBuilder serializeVariable(PropertyInducingElement variable) { 675 UnlinkedVariableBuilder serializeVariable(PropertyInducingElement variable) {
665 UnlinkedVariableBuilder b = new UnlinkedVariableBuilder(ctx); 676 UnlinkedVariableBuilder b = new UnlinkedVariableBuilder(ctx);
666 b.name = variable.name; 677 b.name = variable.name;
678 b.nameOffset = variable.nameOffset;
667 b.type = serializeTypeRef(variable.type, variable); 679 b.type = serializeTypeRef(variable.type, variable);
668 b.isStatic = variable.isStatic && variable.enclosingElement is ClassElement; 680 b.isStatic = variable.isStatic && variable.enclosingElement is ClassElement;
669 b.isFinal = variable.isFinal; 681 b.isFinal = variable.isFinal;
670 b.isConst = variable.isConst; 682 b.isConst = variable.isConst;
671 b.hasImplicitType = variable.hasImplicitType; 683 b.hasImplicitType = variable.hasImplicitType;
672 return b; 684 return b;
673 } 685 }
674 } 686 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/src/summary/resynthesize.dart ('k') | pkg/analyzer/test/src/summary/resynthesize_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698