Version 3.6.0-107.0.dev
Merge 639cc322f1244387c36f6d1c658649c78f57969b into dev
diff --git a/DEPS b/DEPS
index cda0c1f..2b4b357 100644
--- a/DEPS
+++ b/DEPS
@@ -102,7 +102,7 @@
"boringssl_rev": "2db0eb3f96a5756298dcd7f9319e56a98585bd10",
"browser-compat-data_tag": "ac8cae697014da1ff7124fba33b0b4245cc6cd1b", # v1.0.22
"cpu_features_rev": "936b9ab5515dead115606559502e3864958f7f6e",
- "devtools_rev": "e77d6ce142b7bc737af3652f5727e449e84b7b03",
+ "devtools_rev": "14084d20946268f2d22c5ed55bd53e0176748368",
"icu_rev": "43953f57b037778a1b8005564afabe214834f7bd",
"jinja2_rev": "2222b31554f03e62600cd7e383376a7c187967a1",
"libcxx_rev": "44079a4cc04cdeffb9cfe8067bfb3c276fb2bab0",
@@ -182,7 +182,7 @@
"sync_http_rev": "ab8377eba79baff3d77e8c75d502efc2b85a9342",
"tar_rev": "32ceb55e673141abff4e84b99483fe5eb881c291",
"term_glyph_rev": "38a158f55006cf30942c928171ea601ee5e0308f",
- "test_rev": "d0dc83372a65dffe164242213639a40d5bb7a9bb",
+ "test_rev": "9fbbfdbee18a686e3f84a386a01960ea0543ba01",
"test_descriptor_rev": "90743bc16bc00526a1b9a64f813614be9b2479d9",
"test_process_rev": "6223572ca16d7585d5f08d9281de6a5734e45150",
"test_reflective_loader_rev": "6e648863b39aab8d0204e769d25805eea9db0ac4",
@@ -207,7 +207,7 @@
# meant to be downloaded by users for local testing. You can self-service
# update these by following the go/dart-engprod/browsers.md instructions.
"download_chrome": False,
- "chrome_tag": "127.0.6533.43",
+ "chrome_tag": "128.0.6613.5",
"download_firefox": False,
"firefox_tag": "128.0",
diff --git a/pkg/analyzer/lib/src/summary2/library_builder.dart b/pkg/analyzer/lib/src/summary2/library_builder.dart
index 8f85326..3977c91 100644
--- a/pkg/analyzer/lib/src/summary2/library_builder.dart
+++ b/pkg/analyzer/lib/src/summary2/library_builder.dart
@@ -216,7 +216,8 @@
void buildElements() {
_buildDirectives(
kind: kind,
- container: element,
+ containerLibrary: element,
+ containerUnit: element.definingCompilationUnit,
);
for (var linkingUnit in units) {
@@ -614,7 +615,8 @@
_buildDirectives(
kind: importedAugmentation,
- container: augmentation,
+ containerLibrary: augmentation,
+ containerUnit: unitElement,
);
MacroElementsMerger(
@@ -965,77 +967,80 @@
required OperationPerformanceImpl performance,
}) {
DirectiveUri uri;
- if (state is AugmentationImportWithFile) {
- var importedAugmentation = state.importedAugmentation;
- if (importedAugmentation != null) {
- var importedFile = importedAugmentation.file;
+ switch (state) {
+ case AugmentationImportWithFile():
+ var importedAugmentation = state.importedAugmentation;
+ if (importedAugmentation != null) {
+ var importedFile = importedAugmentation.file;
- var parsedResult = importedFile.getParsed(
- performance: performance,
- );
- var unitNode = parsedResult.unit;
+ var parsedResult = importedFile.getParsed(
+ performance: performance,
+ );
+ var unitNode = parsedResult.unit;
- var unitElement = CompilationUnitElementImpl(
- library: element,
- source: importedFile.source,
- lineInfo: unitNode.lineInfo,
- );
- unitNode.declaredElement = unitElement;
- unitElement.setCodeRange(0, unitNode.length);
+ var unitElement = CompilationUnitElementImpl(
+ library: element,
+ source: importedFile.source,
+ lineInfo: unitNode.lineInfo,
+ );
+ unitNode.declaredElement = unitElement;
+ unitElement.setCodeRange(0, unitNode.length);
- var unitReference =
- reference.getChild('@fragment').getChild(importedFile.uriStr);
- _bindReference(unitReference, unitElement);
+ var unitReference =
+ reference.getChild('@fragment').getChild(importedFile.uriStr);
+ _bindReference(unitReference, unitElement);
- var augmentation = LibraryAugmentationElementImpl(
- augmentationTarget: augmentationTarget,
- nameOffset: importedAugmentation.unlinked.augmentKeywordOffset,
- );
- augmentation.definingCompilationUnit = unitElement;
- augmentation.reference =
- reference.getChild('@augmentation').getChild(importedFile.uriStr);
+ var augmentation = LibraryAugmentationElementImpl(
+ augmentationTarget: augmentationTarget,
+ nameOffset: importedAugmentation.unlinked.augmentKeywordOffset,
+ );
+ augmentation.definingCompilationUnit = unitElement;
+ augmentation.reference =
+ reference.getChild('@augmentation').getChild(importedFile.uriStr);
- units.add(
- LinkingUnit(
- reference: unitReference,
- node: unitNode,
- element: unitElement,
- container: augmentation,
- ),
- );
+ units.add(
+ LinkingUnit(
+ reference: unitReference,
+ node: unitNode,
+ element: unitElement,
+ container: augmentation,
+ ),
+ );
- _buildDirectives(
- kind: importedAugmentation,
- container: augmentation,
- );
+ _buildDirectives(
+ kind: importedAugmentation,
+ containerLibrary: augmentation,
+ containerUnit: unitElement,
+ );
- uri = DirectiveUriWithAugmentationImpl(
- relativeUriString: state.uri.relativeUriStr,
- relativeUri: state.uri.relativeUri,
- source: importedFile.source,
- augmentation: augmentation,
- );
- } else {
- uri = DirectiveUriWithSourceImpl(
- relativeUriString: state.uri.relativeUriStr,
- relativeUri: state.uri.relativeUri,
- source: state.importedFile.source,
- );
- }
- } else {
- var selectedUri = state.uri;
- if (selectedUri is file_state.DirectiveUriWithUri) {
- uri = DirectiveUriWithRelativeUriImpl(
- relativeUriString: selectedUri.relativeUriStr,
- relativeUri: selectedUri.relativeUri,
- );
- } else if (selectedUri is file_state.DirectiveUriWithString) {
- uri = DirectiveUriWithRelativeUriStringImpl(
- relativeUriString: selectedUri.relativeUriStr,
- );
- } else {
- uri = DirectiveUriImpl();
- }
+ uri = DirectiveUriWithAugmentationImpl(
+ relativeUriString: state.uri.relativeUriStr,
+ relativeUri: state.uri.relativeUri,
+ source: importedFile.source,
+ augmentation: augmentation,
+ );
+ } else {
+ uri = DirectiveUriWithSourceImpl(
+ relativeUriString: state.uri.relativeUriStr,
+ relativeUri: state.uri.relativeUri,
+ source: state.importedFile.source,
+ );
+ }
+ default:
+ var selectedUri = state.uri;
+ switch (selectedUri) {
+ case file_state.DirectiveUriWithUri():
+ uri = DirectiveUriWithRelativeUriImpl(
+ relativeUriString: selectedUri.relativeUriStr,
+ relativeUri: selectedUri.relativeUri,
+ );
+ case file_state.DirectiveUriWithString():
+ uri = DirectiveUriWithRelativeUriStringImpl(
+ relativeUriString: selectedUri.relativeUriStr,
+ );
+ default:
+ uri = DirectiveUriImpl();
+ }
}
return AugmentationImportElementImpl(
@@ -1065,30 +1070,42 @@
/// Builds directive elements, for the library and recursively for its
/// augmentations.
void _buildDirectives({
- required LibraryOrAugmentationFileKind kind,
- required LibraryOrAugmentationElementImpl container,
+ required FileKind kind,
+ required LibraryOrAugmentationElementImpl containerLibrary,
+ required CompilationUnitElementImpl containerUnit,
}) {
- var definingUnit = container.definingCompilationUnit;
-
- definingUnit.libraryExports = kind.libraryExports.map((state) {
+ containerUnit.libraryExports = kind.libraryExports.map((state) {
return _buildLibraryExport(state);
}).toFixedList();
- definingUnit.libraryImports = kind.libraryImports.map((state) {
+ containerUnit.libraryImports = kind.libraryImports.map((state) {
return _buildLibraryImport(
- containerLibrary: container,
- containerUnit: definingUnit,
+ containerLibrary: containerLibrary,
+ containerUnit: containerUnit,
state: state,
);
}).toFixedList();
- container.augmentationImports = kind.augmentationImports.map((state) {
- return _buildAugmentationImport(
- container,
- state,
- performance: OperationPerformanceImpl('<root>'),
- );
- }).toFixedList();
+ if (containerLibrary.definingCompilationUnit == containerUnit) {
+ containerLibrary.augmentationImports =
+ kind.augmentationImports.map((state) {
+ return _buildAugmentationImport(
+ containerLibrary,
+ state,
+ performance: OperationPerformanceImpl('<root>'),
+ );
+ }).toFixedList();
+ }
+
+ if (containerLibrary is LibraryElementImpl) {
+ containerLibrary.parts = kind.partIncludes.map((partState) {
+ return _buildPartInclude(
+ containerLibrary: containerLibrary,
+ containerUnit: containerUnit,
+ state: partState,
+ );
+ }).toFixedList();
+ }
}
LibraryExportElementImpl _buildLibraryExport(LibraryExportState state) {
@@ -1097,59 +1114,61 @@
);
DirectiveUri uri;
- if (state is LibraryExportWithFile) {
- var exportedLibraryKind = state.exportedLibrary;
- if (exportedLibraryKind != null) {
- var exportedFile = exportedLibraryKind.file;
- var exportedUri = exportedFile.uri;
- var elementFactory = linker.elementFactory;
- var exportedLibrary = elementFactory.libraryOfUri2(exportedUri);
- uri = DirectiveUriWithLibraryImpl(
- relativeUriString: state.selectedUri.relativeUriStr,
- relativeUri: state.selectedUri.relativeUri,
- source: exportedLibrary.source,
- library: exportedLibrary,
- );
- } else {
- uri = DirectiveUriWithSourceImpl(
- relativeUriString: state.selectedUri.relativeUriStr,
- relativeUri: state.selectedUri.relativeUri,
- source: state.exportedSource,
- );
- }
- } else if (state is LibraryExportWithInSummarySource) {
- var exportedLibrarySource = state.exportedLibrarySource;
- if (exportedLibrarySource != null) {
- var exportedUri = exportedLibrarySource.uri;
- var elementFactory = linker.elementFactory;
- var exportedLibrary = elementFactory.libraryOfUri2(exportedUri);
- uri = DirectiveUriWithLibraryImpl(
- relativeUriString: state.selectedUri.relativeUriStr,
- relativeUri: state.selectedUri.relativeUri,
- source: exportedLibrary.source,
- library: exportedLibrary,
- );
- } else {
- uri = DirectiveUriWithSourceImpl(
- relativeUriString: state.selectedUri.relativeUriStr,
- relativeUri: state.selectedUri.relativeUri,
- source: state.exportedSource,
- );
- }
- } else {
- var selectedUri = state.selectedUri;
- if (selectedUri is file_state.DirectiveUriWithUri) {
- uri = DirectiveUriWithRelativeUriImpl(
- relativeUriString: selectedUri.relativeUriStr,
- relativeUri: selectedUri.relativeUri,
- );
- } else if (selectedUri is file_state.DirectiveUriWithString) {
- uri = DirectiveUriWithRelativeUriStringImpl(
- relativeUriString: selectedUri.relativeUriStr,
- );
- } else {
- uri = DirectiveUriImpl();
- }
+ switch (state) {
+ case LibraryExportWithFile():
+ var exportedLibraryKind = state.exportedLibrary;
+ if (exportedLibraryKind != null) {
+ var exportedFile = exportedLibraryKind.file;
+ var exportedUri = exportedFile.uri;
+ var elementFactory = linker.elementFactory;
+ var exportedLibrary = elementFactory.libraryOfUri2(exportedUri);
+ uri = DirectiveUriWithLibraryImpl(
+ relativeUriString: state.selectedUri.relativeUriStr,
+ relativeUri: state.selectedUri.relativeUri,
+ source: exportedLibrary.source,
+ library: exportedLibrary,
+ );
+ } else {
+ uri = DirectiveUriWithSourceImpl(
+ relativeUriString: state.selectedUri.relativeUriStr,
+ relativeUri: state.selectedUri.relativeUri,
+ source: state.exportedSource,
+ );
+ }
+ case LibraryExportWithInSummarySource():
+ var exportedLibrarySource = state.exportedLibrarySource;
+ if (exportedLibrarySource != null) {
+ var exportedUri = exportedLibrarySource.uri;
+ var elementFactory = linker.elementFactory;
+ var exportedLibrary = elementFactory.libraryOfUri2(exportedUri);
+ uri = DirectiveUriWithLibraryImpl(
+ relativeUriString: state.selectedUri.relativeUriStr,
+ relativeUri: state.selectedUri.relativeUri,
+ source: exportedLibrary.source,
+ library: exportedLibrary,
+ );
+ } else {
+ uri = DirectiveUriWithSourceImpl(
+ relativeUriString: state.selectedUri.relativeUriStr,
+ relativeUri: state.selectedUri.relativeUri,
+ source: state.exportedSource,
+ );
+ }
+ default:
+ var selectedUri = state.selectedUri;
+ switch (selectedUri) {
+ case file_state.DirectiveUriWithUri():
+ uri = DirectiveUriWithRelativeUriImpl(
+ relativeUriString: selectedUri.relativeUriStr,
+ relativeUri: selectedUri.relativeUri,
+ );
+ case file_state.DirectiveUriWithString():
+ uri = DirectiveUriWithRelativeUriStringImpl(
+ relativeUriString: selectedUri.relativeUriStr,
+ );
+ default:
+ uri = DirectiveUriImpl();
+ }
}
return LibraryExportElementImpl(
@@ -1187,59 +1206,61 @@
);
DirectiveUri uri;
- if (state is LibraryImportWithFile) {
- var importedLibraryKind = state.importedLibrary;
- if (importedLibraryKind != null) {
- var importedFile = importedLibraryKind.file;
- var importedUri = importedFile.uri;
- var elementFactory = linker.elementFactory;
- var importedLibrary = elementFactory.libraryOfUri2(importedUri);
- uri = DirectiveUriWithLibraryImpl(
- relativeUriString: state.selectedUri.relativeUriStr,
- relativeUri: state.selectedUri.relativeUri,
- source: importedLibrary.source,
- library: importedLibrary,
- );
- } else {
- uri = DirectiveUriWithSourceImpl(
- relativeUriString: state.selectedUri.relativeUriStr,
- relativeUri: state.selectedUri.relativeUri,
- source: state.importedSource,
- );
- }
- } else if (state is LibraryImportWithInSummarySource) {
- var importedLibrarySource = state.importedLibrarySource;
- if (importedLibrarySource != null) {
- var importedUri = importedLibrarySource.uri;
- var elementFactory = linker.elementFactory;
- var importedLibrary = elementFactory.libraryOfUri2(importedUri);
- uri = DirectiveUriWithLibraryImpl(
- relativeUriString: state.selectedUri.relativeUriStr,
- relativeUri: state.selectedUri.relativeUri,
- source: importedLibrary.source,
- library: importedLibrary,
- );
- } else {
- uri = DirectiveUriWithSourceImpl(
- relativeUriString: state.selectedUri.relativeUriStr,
- relativeUri: state.selectedUri.relativeUri,
- source: state.importedSource,
- );
- }
- } else {
- var selectedUri = state.selectedUri;
- if (selectedUri is file_state.DirectiveUriWithUri) {
- uri = DirectiveUriWithRelativeUriImpl(
- relativeUriString: selectedUri.relativeUriStr,
- relativeUri: selectedUri.relativeUri,
- );
- } else if (selectedUri is file_state.DirectiveUriWithString) {
- uri = DirectiveUriWithRelativeUriStringImpl(
- relativeUriString: selectedUri.relativeUriStr,
- );
- } else {
- uri = DirectiveUriImpl();
- }
+ switch (state) {
+ case LibraryImportWithFile():
+ var importedLibraryKind = state.importedLibrary;
+ if (importedLibraryKind != null) {
+ var importedFile = importedLibraryKind.file;
+ var importedUri = importedFile.uri;
+ var elementFactory = linker.elementFactory;
+ var importedLibrary = elementFactory.libraryOfUri2(importedUri);
+ uri = DirectiveUriWithLibraryImpl(
+ relativeUriString: state.selectedUri.relativeUriStr,
+ relativeUri: state.selectedUri.relativeUri,
+ source: importedLibrary.source,
+ library: importedLibrary,
+ );
+ } else {
+ uri = DirectiveUriWithSourceImpl(
+ relativeUriString: state.selectedUri.relativeUriStr,
+ relativeUri: state.selectedUri.relativeUri,
+ source: state.importedSource,
+ );
+ }
+ case LibraryImportWithInSummarySource():
+ var importedLibrarySource = state.importedLibrarySource;
+ if (importedLibrarySource != null) {
+ var importedUri = importedLibrarySource.uri;
+ var elementFactory = linker.elementFactory;
+ var importedLibrary = elementFactory.libraryOfUri2(importedUri);
+ uri = DirectiveUriWithLibraryImpl(
+ relativeUriString: state.selectedUri.relativeUriStr,
+ relativeUri: state.selectedUri.relativeUri,
+ source: importedLibrary.source,
+ library: importedLibrary,
+ );
+ } else {
+ uri = DirectiveUriWithSourceImpl(
+ relativeUriString: state.selectedUri.relativeUriStr,
+ relativeUri: state.selectedUri.relativeUri,
+ source: state.importedSource,
+ );
+ }
+ default:
+ var selectedUri = state.selectedUri;
+ switch (selectedUri) {
+ case file_state.DirectiveUriWithUri():
+ uri = DirectiveUriWithRelativeUriImpl(
+ relativeUriString: selectedUri.relativeUriStr,
+ relativeUri: selectedUri.relativeUri,
+ );
+ case file_state.DirectiveUriWithString():
+ uri = DirectiveUriWithRelativeUriStringImpl(
+ relativeUriString: selectedUri.relativeUriStr,
+ );
+ default:
+ uri = DirectiveUriImpl();
+ }
}
return LibraryImportElementImpl(
@@ -1274,6 +1295,89 @@
}
}
+ PartElementImpl _buildPartInclude({
+ required LibraryElementImpl containerLibrary,
+ required CompilationUnitElementImpl containerUnit,
+ required file_state.PartIncludeState state,
+ }) {
+ DirectiveUri directiveUri;
+ switch (state) {
+ case PartIncludeWithFile():
+ var includedPart = state.includedPart;
+ if (includedPart != null) {
+ var partFile = includedPart.file;
+ var partUnitNode = partFile.parse(
+ performance: OperationPerformanceImpl('<root>'),
+ );
+ var unitElement = CompilationUnitElementImpl(
+ library: containerLibrary,
+ source: partFile.source,
+ lineInfo: partUnitNode.lineInfo,
+ );
+ partUnitNode.declaredElement = unitElement;
+ unitElement.isSynthetic = !partFile.exists;
+ unitElement.uri = partFile.uriStr;
+ unitElement.setCodeRange(0, partUnitNode.length);
+
+ var unitReference =
+ reference.getChild('@fragment').getChild(partFile.uriStr);
+ _bindReference(unitReference, unitElement);
+
+ units.add(
+ LinkingUnit(
+ reference: unitReference,
+ node: partUnitNode,
+ container: containerLibrary,
+ element: unitElement,
+ ),
+ );
+
+ _buildDirectives(
+ kind: includedPart,
+ containerLibrary: element,
+ containerUnit: unitElement,
+ );
+
+ directiveUri = DirectiveUriWithUnitImpl(
+ relativeUriString: state.uri.relativeUriStr,
+ relativeUri: state.uri.relativeUri,
+ unit: unitElement,
+ );
+ } else {
+ directiveUri = DirectiveUriWithSourceImpl(
+ relativeUriString: state.uri.relativeUriStr,
+ relativeUri: state.uri.relativeUri,
+ source: state.includedFile.source,
+ );
+ }
+ default:
+ var uriState = state.uri;
+ switch (uriState) {
+ case file_state.DirectiveUriWithSource():
+ directiveUri = DirectiveUriWithSourceImpl(
+ relativeUriString: uriState.relativeUriStr,
+ relativeUri: uriState.relativeUri,
+ source: uriState.source,
+ );
+ case file_state.DirectiveUriWithUri():
+ directiveUri = DirectiveUriWithRelativeUriImpl(
+ relativeUriString: uriState.relativeUriStr,
+ relativeUri: uriState.relativeUri,
+ );
+ case file_state.DirectiveUriWithString():
+ directiveUri = DirectiveUriWithRelativeUriStringImpl(
+ relativeUriString: uriState.relativeUriStr,
+ );
+ default:
+ directiveUri = DirectiveUriImpl();
+ }
+ }
+
+ return PartElementImpl(
+ uri: directiveUri,
+ );
+ }
+
/// These elements are implicitly declared in `dart:core`.
void _declareDartCoreDynamicNever() {
if (reference.name == 'dart:core') {
@@ -1362,75 +1466,6 @@
libraryElement.definingCompilationUnit = unitElement;
}
- libraryElement.parts = inputLibrary.partIncludes.map((partState) {
- var uriState = partState.uri;
- DirectiveUri directiveUri;
- if (partState is PartIncludeWithFile) {
- var includedPart = partState.includedPart;
- if (includedPart != null) {
- var partFile = includedPart.file;
- var partUnitNode = partFile.parse(
- performance: OperationPerformanceImpl('<root>'),
- );
- var unitElement = CompilationUnitElementImpl(
- library: libraryElement,
- source: partFile.source,
- lineInfo: partUnitNode.lineInfo,
- );
- partUnitNode.declaredElement = unitElement;
- unitElement.isSynthetic = !partFile.exists;
- unitElement.uri = partFile.uriStr;
- unitElement.setCodeRange(0, partUnitNode.length);
-
- var unitReference = unitContainerRef.getChild(partFile.uriStr);
- _bindReference(unitReference, unitElement);
-
- linkingUnits.add(
- LinkingUnit(
- reference: unitReference,
- node: partUnitNode,
- container: libraryElement,
- element: unitElement,
- ),
- );
-
- directiveUri = DirectiveUriWithUnitImpl(
- relativeUriString: partState.uri.relativeUriStr,
- relativeUri: partState.uri.relativeUri,
- unit: unitElement,
- );
- } else {
- directiveUri = DirectiveUriWithSourceImpl(
- relativeUriString: partState.uri.relativeUriStr,
- relativeUri: partState.uri.relativeUri,
- source: partState.includedFile.source,
- );
- }
- } else if (uriState is file_state.DirectiveUriWithSource) {
- directiveUri = DirectiveUriWithSourceImpl(
- relativeUriString: uriState.relativeUriStr,
- relativeUri: uriState.relativeUri,
- source: uriState.source,
- );
- } else if (uriState is file_state.DirectiveUriWithUri) {
- directiveUri = DirectiveUriWithRelativeUriImpl(
- relativeUriString: uriState.relativeUriStr,
- relativeUri: uriState.relativeUri,
- );
- } else if (uriState is file_state.DirectiveUriWithString) {
- directiveUri = DirectiveUriWithRelativeUriStringImpl(
- relativeUriString: uriState.relativeUriStr,
- );
- } else {
- directiveUri = DirectiveUriImpl();
- }
- return directiveUri;
- }).map((directiveUri) {
- return PartElementImpl(
- uri: directiveUri,
- );
- }).toFixedList();
-
var builder = LibraryBuilder._(
linker: linker,
kind: inputLibrary,
diff --git a/pkg/analyzer/test/src/summary/elements_test.dart b/pkg/analyzer/test/src/summary/elements_test.dart
index bca5029..3762f0d 100644
--- a/pkg/analyzer/test/src/summary/elements_test.dart
+++ b/pkg/analyzer/test/src/summary/elements_test.dart
@@ -46884,6 +46884,117 @@
expect(prefixNames, unorderedEquals(['p1', 'p2']));
}
+ test_libraryExports_part() async {
+ newFile('$testPackageLibPath/a.dart', r'''
+part of 'test.dart';
+export 'dart:math';
+''');
+
+ var library = await buildLibrary(r'''
+export 'dart:io';
+part 'a.dart';
+''');
+
+ checkElementText(library, r'''
+library
+ reference: <testLibrary>
+ libraryExports
+ dart:io
+ enclosingElement: <testLibrary>
+ enclosingElement3: <testLibraryFragment>
+ definingUnit
+ reference: <testLibraryFragment>
+ enclosingElement: <testLibrary>
+ libraryExports
+ dart:io
+ enclosingElement: <testLibrary>
+ enclosingElement3: <testLibraryFragment>
+ parts
+ package:test/a.dart
+ reference: <testLibrary>::@fragment::package:test/a.dart
+ enclosingElement: <testLibrary>
+ enclosingElement3: <testLibraryFragment>
+ libraryExports
+ dart:math
+ enclosingElement: <testLibrary>
+ enclosingElement3: <testLibrary>::@fragment::package:test/a.dart
+''');
+ }
+
+ test_libraryImports_part() async {
+ newFile('$testPackageLibPath/a.dart', r'''
+part of 'test.dart';
+import 'dart:math';
+''');
+
+ var library = await buildLibrary(r'''
+import 'dart:io';
+part 'a.dart';
+''');
+
+ checkElementText(library, r'''
+library
+ reference: <testLibrary>
+ libraryImports
+ dart:io
+ enclosingElement: <testLibrary>
+ enclosingElement3: <testLibraryFragment>
+ definingUnit
+ reference: <testLibraryFragment>
+ enclosingElement: <testLibrary>
+ libraryImports
+ dart:io
+ enclosingElement: <testLibrary>
+ enclosingElement3: <testLibraryFragment>
+ parts
+ package:test/a.dart
+ reference: <testLibrary>::@fragment::package:test/a.dart
+ enclosingElement: <testLibrary>
+ enclosingElement3: <testLibraryFragment>
+ libraryImports
+ dart:math
+ enclosingElement: <testLibrary>
+ enclosingElement3: <testLibrary>::@fragment::package:test/a.dart
+''');
+ }
+
+ test_libraryImports_part_metadata() async {
+ newFile('$testPackageLibPath/a.dart', r'''
+part of 'test.dart';
+@deprecated
+import 'dart:math';
+''');
+
+ var library = await buildLibrary(r'''
+part 'a.dart';
+''');
+
+ checkElementText(library, r'''
+library
+ reference: <testLibrary>
+ definingUnit
+ reference: <testLibraryFragment>
+ enclosingElement: <testLibrary>
+ parts
+ package:test/a.dart
+ reference: <testLibrary>::@fragment::package:test/a.dart
+ enclosingElement: <testLibrary>
+ enclosingElement3: <testLibraryFragment>
+ libraryImports
+ dart:math
+ enclosingElement: <testLibrary>
+ enclosingElement3: <testLibrary>::@fragment::package:test/a.dart
+ metadata
+ Annotation
+ atSign: @ @21
+ name: SimpleIdentifier
+ token: deprecated @22
+ staticElement: dart:core::<fragment>::@getter::deprecated
+ staticType: null
+ element: dart:core::<fragment>::@getter::deprecated
+''');
+ }
+
test_localFunctions() async {
var library = await buildLibrary(r'''
f() {
diff --git a/pkg/dartdev/lib/src/sdk.dart b/pkg/dartdev/lib/src/sdk.dart
index 89ac5a1..168294b 100644
--- a/pkg/dartdev/lib/src/sdk.dart
+++ b/pkg/dartdev/lib/src/sdk.dart
@@ -30,15 +30,25 @@
// Assume that we want to use the same Dart executable that we used to spawn
// DartDev. We should be able to run programs with out/ReleaseX64/dart even
// if the SDK isn't completely built.
- String get dart => path.absolute(
- _runFromBuildRoot
- ? sdkPath
- : path.absolute(
- sdkPath,
- 'bin',
- ),
- path.basename(Platform.executable),
- );
+ String get dart {
+ var basename = path.basename(Platform.executable);
+ // It's possible that Platform.executable won't include the .exe extension
+ // on Windows (e.g., launching `dart` from cmd.exe where `dart` is on the
+ // PATH). Append .exe in this case so the `checkArtifactExists` check won't
+ // fail.
+ if (Platform.isWindows && !basename.endsWith('.exe')) {
+ basename += '.exe';
+ }
+ return path.absolute(
+ _runFromBuildRoot
+ ? sdkPath
+ : path.absolute(
+ sdkPath,
+ 'bin',
+ ),
+ basename,
+ );
+ }
String get dartAotRuntime => _runFromBuildRoot
? path.absolute(
diff --git a/pkg/dev_compiler/test/expression_compiler/assertions_enabled_test.dart b/pkg/dev_compiler/test/expression_compiler/assertions_enabled_test.dart
index 8ac3986..73b5ed7 100644
--- a/pkg/dev_compiler/test/expression_compiler/assertions_enabled_test.dart
+++ b/pkg/dev_compiler/test/expression_compiler/assertions_enabled_test.dart
@@ -45,32 +45,23 @@
await driver.checkInFrame(
breakpointId: 'bp',
expression: 'myAssert()',
- // TODO(sigmund): Since Chrome 125, Chrome broke how errors are
- // printed. The fix landed in Chrome 128. When that version gets
- // rolled, this expectation can be updated back to:
- // expectedError: allOf(
- // contains('Error: Assertion failed:'),
- // contains('test.dart:8:16'),
- // contains('false'),
- // contains('is not true'),
- // ));
- expectedError: startsWith('Error\n'));
+ expectedError: allOf(
+ contains('Error: Assertion failed:'),
+ contains('test.dart:8:16'),
+ contains('false'),
+ contains('is not true'),
+ ));
});
-
test('assert errors in evaluated expression', () async {
await driver.checkInFrame(
breakpointId: 'bp',
expression: '() { assert(false); return 0; } ()',
- // TODO(sigmund): Since Chrome 125, Chrome broke how errors are
- // printed. The fix landed in Chrome 128. When that version gets
- // rolled, this expectation can be updated back to:
- // expectedError: allOf(
- // contains('Error: Assertion failed:'),
- // contains('org-dartlang-debug:synthetic_debug_expression:1:13'),
- // contains('false'),
- // contains('is not true'),
- // ));
- expectedError: startsWith('Error\n'));
+ expectedError: allOf(
+ contains('Error: Assertion failed:'),
+ contains('org-dartlang-debug:synthetic_debug_expression:1:13'),
+ contains('false'),
+ contains('is not true'),
+ ));
});
});
}
diff --git a/pkg/dev_compiler/test/expression_compiler/expression_compiler_e2e_shared.dart b/pkg/dev_compiler/test/expression_compiler/expression_compiler_e2e_shared.dart
index dc295d8..65308cb 100644
--- a/pkg/dev_compiler/test/expression_compiler/expression_compiler_e2e_shared.dart
+++ b/pkg/dev_compiler/test/expression_compiler/expression_compiler_e2e_shared.dart
@@ -822,12 +822,8 @@
await driver.checkInFrame(
breakpointId: 'lateGlobalVariableBP',
expression: 'lateGlobal2',
- // TODO(sigmund): Since Chrome 125, Chrome broke how errors are
- // printed. The fix landed in Chrome 128. When that version gets
- // rolled, this expectation can be updated back to:
- //expectedError: 'Error: LateInitializationError: '
- // "Field 'lateGlobal2' has not been initialized.");
- expectedError: startsWith('Error\n'));
+ expectedError: 'Error: LateInitializationError: '
+ "Field 'lateGlobal2' has not been initialized.");
});
});
});
diff --git a/tools/VERSION b/tools/VERSION
index 6f7908c..e247a58 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 3
MINOR 6
PATCH 0
-PRERELEASE 106
+PRERELEASE 107
PRERELEASE_PATCH 0