Skip to content

Commit

Permalink
[cfe] Move relativize code from dart2js to cfe
Browse files Browse the repository at this point in the history
Change-Id: I2e07dcf91adf65965583189972b0c27cc0aee526
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/111427
Reviewed-by: Vyacheslav Egorov <[email protected]>
Commit-Queue: Johnni Winther <[email protected]>
  • Loading branch information
johnniwinther authored and [email protected] committed Aug 1, 2019
1 parent db3028a commit 972d4e9
Show file tree
Hide file tree
Showing 19 changed files with 132 additions and 134 deletions.
32 changes: 17 additions & 15 deletions pkg/compiler/lib/src/dart2js.dart
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ import 'filenames.dart';
import 'options.dart' show CompilerOptions;
import 'source_file_provider.dart';
import 'util/command_line.dart';
import 'util/uri_extras.dart';
import 'util/util.dart' show stackTraceFilePrefix;

const String _defaultSpecificationUri = '../../../../sdk/lib/libraries.json';
Expand Down Expand Up @@ -675,16 +674,16 @@ Future<api.CompilationResult> compile(List<String> argv,
inputName = 'bytes data';
inputSize = inputProvider.dartCharactersRead;
String dataInput =
relativize(currentDirectory, readDataUri, Platform.isWindows);
fe.relativizeUri(currentDirectory, readDataUri, Platform.isWindows);
summary = 'Data files $input and $dataInput ';
break;
case ReadStrategy.fromCodegen:
inputName = 'bytes data';
inputSize = inputProvider.dartCharactersRead;
String dataInput =
relativize(currentDirectory, readDataUri, Platform.isWindows);
String codeInput =
relativize(currentDirectory, readCodegenUri, Platform.isWindows);
fe.relativizeUri(currentDirectory, readDataUri, Platform.isWindows);
String codeInput = fe.relativizeUri(
currentDirectory, readCodegenUri, Platform.isWindows);
summary = 'Data files $input, $dataInput and '
'${codeInput}[0-${codegenShards - 1}] ';
break;
Expand All @@ -696,31 +695,34 @@ Future<api.CompilationResult> compile(List<String> argv,
outputName = 'characters JavaScript';
outputSize = outputProvider.totalCharactersWrittenJavaScript;
primaryOutputSize = outputProvider.totalCharactersWrittenPrimary;
String output = relativize(currentDirectory, out, Platform.isWindows);
String output =
fe.relativizeUri(currentDirectory, out, Platform.isWindows);
summary += 'compiled to JavaScript: ${output}';
break;
case WriteStrategy.toKernel:
processName = 'Compiled';
outputName = 'kernel bytes';
outputSize = outputProvider.totalDataWritten;
String output = relativize(currentDirectory, out, Platform.isWindows);
String output =
fe.relativizeUri(currentDirectory, out, Platform.isWindows);
summary += 'compiled to dill: ${output}.';
break;
case WriteStrategy.toData:
processName = 'Serialized';
outputName = 'bytes data';
outputSize = outputProvider.totalDataWritten;
String output = relativize(currentDirectory, out, Platform.isWindows);
String dataOutput =
relativize(currentDirectory, writeDataUri, Platform.isWindows);
String output =
fe.relativizeUri(currentDirectory, out, Platform.isWindows);
String dataOutput = fe.relativizeUri(
currentDirectory, writeDataUri, Platform.isWindows);
summary += 'serialized to dill and data: ${output} and ${dataOutput}.';
break;
case WriteStrategy.toCodegen:
processName = 'Serialized';
outputName = 'bytes data';
outputSize = outputProvider.totalDataWritten;
String codeOutput =
relativize(currentDirectory, writeCodegenUri, Platform.isWindows);
String codeOutput = fe.relativizeUri(
currentDirectory, writeCodegenUri, Platform.isWindows);
summary += 'serialized to codegen data: '
'${codeOutput}${codegenShard}.';
break;
Expand All @@ -731,9 +733,9 @@ Future<api.CompilationResult> compile(List<String> argv,
'${_formatCharacterCount(outputSize)} $outputName in '
'${_formatDurationAsSeconds(wallclock.elapsed)} seconds');
if (primaryOutputSize != null) {
diagnosticHandler
.info('${_formatCharacterCount(primaryOutputSize)} $outputName '
'in ${relativize(currentDirectory, out, Platform.isWindows)}');
diagnosticHandler.info(
'${_formatCharacterCount(primaryOutputSize)} $outputName '
'in ${fe.relativizeUri(currentDirectory, out, Platform.isWindows)}');
}
if (writeStrategy == WriteStrategy.toJs) {
if (outputSpecified || diagnosticHandler.verbose) {
Expand Down
5 changes: 3 additions & 2 deletions pkg/compiler/lib/src/deferred_load.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ library deferred_load;

import 'dart:collection' show Queue;

import 'package:front_end/src/api_unstable/dart2js.dart' as fe;

import 'common/tasks.dart' show CompilerTask;
import 'common.dart';
import 'common_elements.dart'
Expand All @@ -26,7 +28,6 @@ import 'options.dart';
import 'universe/use.dart';
import 'universe/world_impact.dart'
show ImpactUseCase, WorldImpact, WorldImpactVisitorImpl;
import 'util/uri_extras.dart' as uri_extras;
import 'util/util.dart' show makeUnique;
import 'world.dart' show KClosedWorld;

Expand Down Expand Up @@ -972,7 +973,7 @@ class ImportDescription {
ImportDescription(
ImportEntity import, LibraryEntity importingLibrary, Uri mainLibraryUri)
: this.internal(
uri_extras.relativize(
fe.relativizeUri(
mainLibraryUri, importingLibrary.canonicalUri, false),
import.name,
importingLibrary);
Expand Down
6 changes: 3 additions & 3 deletions pkg/compiler/lib/src/diagnostics/code_location.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

library dart2js.diagnostics.code_location;

import '../util/uri_extras.dart' as uri_extras show relativize;
import 'package:front_end/src/api_unstable/dart2js.dart' as fe;

/// [CodeLocation] divides uris into different classes.
///
Expand Down Expand Up @@ -47,7 +47,7 @@ class SchemeLocation implements CodeLocation {

@override
String relativize(Uri baseUri) {
return uri_extras.relativize(baseUri, uri, false);
return fe.relativizeUri(baseUri, uri, false);
}
}

Expand Down Expand Up @@ -82,7 +82,7 @@ class UriLocation implements CodeLocation {

@override
String relativize(Uri baseUri) {
return uri_extras.relativize(baseUri, uri, false);
return fe.relativizeUri(baseUri, uri, false);
}
}

Expand Down
10 changes: 5 additions & 5 deletions pkg/compiler/lib/src/io/source_map_builder.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@

library dart2js.source_map_builder;

import 'package:front_end/src/api_unstable/dart2js.dart' as fe;
import 'package:kernel/ast.dart' show Location;
import '../../compiler_new.dart' show CompilerOutput, OutputSink, OutputType;
import '../util/uri_extras.dart' show relativize;
import '../util/util.dart';
import 'location_provider.dart';
import 'code_output.dart' show SourceLocationsProvider, SourceLocations;
Expand Down Expand Up @@ -122,15 +122,15 @@ class SourceMapBuilder {
buffer.write(' "version": 3,\n');
buffer.write(' "engine": "$version",\n');
if (sourceMapUri != null && targetFileUri != null) {
buffer.write(
' "file": "${relativize(sourceMapUri, targetFileUri, false)}",\n');
buffer.write(' "file": '
'"${fe.relativizeUri(sourceMapUri, targetFileUri, false)}",\n');
}
buffer.write(' "sourceRoot": "",\n');
buffer.write(' "sources": ');
Iterable<String> relativeSourceUriList = const <String>[];
if (sourceMapUri != null) {
relativeSourceUriList =
uriMap.elements.map((u) => relativize(sourceMapUri, u, false));
uriMap.elements.map((u) => fe.relativizeUri(sourceMapUri, u, false));
}
printStringListOn(relativeSourceUriList, buffer);
buffer.write(',\n');
Expand Down Expand Up @@ -255,7 +255,7 @@ class SourceMapBuilder {
/// make it point to the source map file in [sourceMapUri].
static String generateSourceMapTag(Uri sourceMapUri, Uri fileUri) {
if (sourceMapUri != null && fileUri != null) {
String sourceMapFileName = relativize(fileUri, sourceMapUri, false);
String sourceMapFileName = fe.relativizeUri(fileUri, sourceMapUri, false);
return '''
//# sourceMappingURL=$sourceMapFileName
Expand Down
17 changes: 10 additions & 7 deletions pkg/compiler/lib/src/source_file_provider.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,15 @@ import 'dart:io';
import 'dart:math' as math;
import 'dart:typed_data';

import 'package:front_end/src/api_unstable/dart2js.dart' as fe;

import '../compiler.dart' as api show Diagnostic;
import '../compiler_new.dart' as api;
import '../compiler_new.dart';
import 'colors.dart' as colors;
import 'dart2js.dart' show AbortLeg;
import 'filenames.dart';
import 'io/source_file.dart';
import 'util/uri_extras.dart';

abstract class SourceFileProvider implements CompilerInput {
bool isWindows = (Platform.operatingSystem == 'windows');
Expand Down Expand Up @@ -107,7 +108,7 @@ abstract class SourceFileProvider implements CompilerInput {
.getUrl(resourceUri)
.then((HttpClientRequest request) => request.close())
.then((HttpClientResponse response) {
if (response.statusCode != HttpStatus.OK) {
if (response.statusCode != HttpStatus.ok) {
String msg = 'Failure getting $resourceUri: '
'${response.statusCode} ${response.reasonPhrase}';
throw msg;
Expand Down Expand Up @@ -145,7 +146,7 @@ abstract class SourceFileProvider implements CompilerInput {
throw "unimplemented";
}

relativizeUri(Uri uri) => relativize(cwd, uri, isWindows);
relativizeUri(Uri uri) => fe.relativizeUri(cwd, uri, isWindows);

SourceFile<List<int>> getUtf8SourceFile(Uri resourceUri) {
return utf8SourceFiles[resourceUri];
Expand Down Expand Up @@ -384,12 +385,13 @@ class RandomAccessFileOutputProvider implements CompilerOutput {

RandomAccessFile output;
try {
output = new File(uri.toFilePath()).openSync(mode: FileMode.WRITE);
output = new File(uri.toFilePath()).openSync(mode: FileMode.write);
} on FileSystemException catch (e) {
onFailure('$e');
}

allOutputFiles.add(relativize(currentDirectory, uri, Platform.isWindows));
allOutputFiles
.add(fe.relativizeUri(currentDirectory, uri, Platform.isWindows));

int charactersWritten = 0;

Expand Down Expand Up @@ -424,15 +426,16 @@ class RandomAccessFileOutputProvider implements CompilerOutput {
BinaryOutputSink createBinarySink(Uri uri) {
uri = currentDirectory.resolveUri(uri);

allOutputFiles.add(relativize(currentDirectory, uri, Platform.isWindows));
allOutputFiles
.add(fe.relativizeUri(currentDirectory, uri, Platform.isWindows));

if (uri.scheme != 'file') {
onFailure('Unhandled scheme ${uri.scheme} in $uri.');
}

RandomAccessFile output;
try {
output = new File(uri.toFilePath()).openSync(mode: FileMode.WRITE);
output = new File(uri.toFilePath()).openSync(mode: FileMode.write);
} on FileSystemException catch (e) {
onFailure('$e');
}
Expand Down
73 changes: 0 additions & 73 deletions pkg/compiler/lib/src/util/uri_extras.dart

This file was deleted.

6 changes: 3 additions & 3 deletions pkg/compiler/tool/generate_kernel.dart
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,9 @@ main(List<String> args) async {
];

if (flags.rest.isEmpty) {
var script = relativizeUri(Platform.script);
var platform =
relativizeUri(Uri.base.resolve(nativeToUriPath(flags['platform'])));
var script = relativizeUri(Uri.base, Platform.script, false);
var platform = relativizeUri(
Uri.base, Uri.base.resolve(nativeToUriPath(flags['platform'])), false);
print('usage: ${Platform.executable} $script '
'[--platform=$platform] [--out=out.dill] program.dart');
exit(1);
Expand Down
5 changes: 3 additions & 2 deletions pkg/front_end/lib/src/base/libraries_specification.dart
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,8 @@
// TODO(sigmund): move this file to a shared package.
import 'dart:convert' show jsonDecode, jsonEncode;

import '../fasta/util/relativize.dart';
import '../fasta/util/relativize.dart' show relativizeUri;
import '../fasta/resolve_input_uri.dart' show isWindows;

/// Contents from a single library specification file.
///
Expand Down Expand Up @@ -202,7 +203,7 @@ class LibrariesSpecification {
Map toJsonMap(Uri outputUri) {
var result = {};
var dir = outputUri.resolve('.');
String pathFor(Uri uri) => relativizeUri(uri, base: dir);
String pathFor(Uri uri) => relativizeUri(dir, uri, isWindows);
_targets.forEach((targetName, target) {
var libraries = {};
target._libraries.forEach((name, lib) {
Expand Down
5 changes: 4 additions & 1 deletion pkg/front_end/lib/src/fasta/command_line_reporting.dart
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ import 'messages.dart' show getLocation, getSourceLine;

import 'problems.dart' show unhandled;

import 'resolve_input_uri.dart' show isWindows;

import 'severity.dart' show Severity, severityPrefixes;

import 'scanner/characters.dart' show $CARET, $SPACE, $TAB;
Expand Down Expand Up @@ -74,7 +76,8 @@ String format(LocatedMessage message, Severity severity, {Location location}) {
}

if (message.uri != null) {
String path = relativizeUri(translateSdk(message.uri));
String path =
relativizeUri(Uri.base, translateSdk(message.uri), isWindows);
int offset = message.charOffset;
location ??= (offset == -1 ? null : getLocation(message.uri, offset));
if (location?.line == TreeNode.noOffset) {
Expand Down
4 changes: 3 additions & 1 deletion pkg/front_end/lib/src/fasta/fasta_codes.dart
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ import 'kernel/type_labeler.dart';

import 'severity.dart' show Severity;

import 'resolve_input_uri.dart' show isWindows;

import 'util/relativize.dart' as util show relativizeUri;

part 'fasta_codes_generated.dart';
Expand Down Expand Up @@ -251,7 +253,7 @@ String relativizeUri(Uri uri) {
// (otherwise, we might get an `UNUSED_IMPORT` warning).
//
// 2. We can change `base` argument here if needed.
return util.relativizeUri(uri, base: Uri.base);
return uri == null ? null : util.relativizeUri(Uri.base, uri, isWindows);
}

typedef SummaryTemplate = Message Function(int, int, num, num, num);
Expand Down
Loading

0 comments on commit 972d4e9

Please sign in to comment.