Merge the null_safety branch into master (#16)
diff --git a/.travis.yml b/.travis.yml
index de32a3b..e99f285 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,28 +1,39 @@
language: dart
-# trying to get chrome working
-sudo: true
-
dart:
- - dev
- - 2.7.0
+ - be/raw/latest
-dart_task:
- - test: -p chrome,vm
-
-matrix:
+jobs:
include:
- # Only validate formatting using the dev release
- - dart: dev
- dart_task: dartfmt
- - dart: dev
- dart_task:
- dartanalizer: --fatal-warnings --fatal-infos .
+ - stage: analyze_and_format
+ name: "Analyze"
+ dart: be/raw/latest
+ os: linux
+ script: dartanalyzer --enable-experiment=non-nullable --fatal-warnings --fatal-infos .
+ - stage: analyze_and_format
+ name: "Format"
+ dart: be/raw/latest
+ os: linux
+ script: dartfmt -n --set-exit-if-changed .
+ - stage: test
+ name: "Vm Tests"
+ dart: be/raw/latest
+ os: linux
+ script: pub run --enable-experiment=non-nullable test -p vm
+ - stage: test
+ name: "Web Tests"
+ dart: be/raw/latest
+ os: linux
+ script: pub run --enable-experiment=non-nullable test -p chrome
+
+stages:
+ - analyze_and_format
+ - test
# Only building master means that we don't run two builds for each pull request.
branches:
- only: [master]
+ only: [master, null_safety]
cache:
- directories:
- - $HOME/.pub-cache
+ directories:
+ - $HOME/.pub-cache
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5bfef35..9b9df6a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 2.1.0
+
+* Migrate to null safety.
+
## 2.0.0
### Breaking Changes
diff --git a/analysis_options.yaml b/analysis_options.yaml
index 76c449a..da905ca 100644
--- a/analysis_options.yaml
+++ b/analysis_options.yaml
@@ -4,3 +4,5 @@
implicit-casts: false
language:
strict-raw-types: true
+ enable-experiment:
+ - non-nullable
diff --git a/lib/source_map_stack_trace.dart b/lib/source_map_stack_trace.dart
index fd1226a..51b5ec0 100644
--- a/lib/source_map_stack_trace.dart
+++ b/lib/source_map_stack_trace.dart
@@ -19,7 +19,7 @@
/// [sdkRoot] is the URI surfaced in the stack traces for SDK libraries.
/// If it's passed, stack frames from the SDK will have `dart:` URLs.
StackTrace mapStackTrace(Mapping sourceMap, StackTrace stackTrace,
- {bool minified = false, Map<String, Uri> packageMap, Uri sdkRoot}) {
+ {bool minified = false, Map<String, Uri>? packageMap, Uri? sdkRoot}) {
if (stackTrace is Chain) {
return Chain(stackTrace.traces.map((trace) {
return Trace.from(mapStackTrace(sourceMap, trace,
@@ -31,24 +31,25 @@
var trace = Trace.from(stackTrace);
return Trace(trace.frames.map((frame) {
+ var line = frame.line;
// If there's no line information, there's no way to translate this frame.
// We could return it as-is, but these lines are usually not useful anyways.
- if (frame.line == null) return null;
+ if (line == null) return null;
// If there's no column, try using the first column of the line.
var column = frame.column ?? 0;
// Subtract 1 because stack traces use 1-indexed lines and columns and
// source maps uses 0-indexed.
- var span = sourceMap.spanFor(frame.line - 1, column - 1,
- uri: frame.uri?.toString());
+ var span =
+ sourceMap.spanFor(line - 1, column - 1, uri: frame.uri.toString());
// If we can't find a source span, ignore the frame. It's probably something
// internal that the user doesn't care about.
if (span == null) return null;
var sourceUrl = span.sourceUrl.toString();
- if (sdkRoot != null && p.url.isWithin(sdkLib, sourceUrl)) {
+ if (sdkLib != null && p.url.isWithin(sdkLib, sourceUrl)) {
sourceUrl = 'dart:' + p.url.relative(sourceUrl, from: sdkLib);
} else if (packageMap != null) {
for (var package in packageMap.keys) {
@@ -70,8 +71,8 @@
// use the minified member name.
minified
? (span.isIdentifier ? span.text : frame.member)
- : _prettifyMember(frame.member));
- }).where((frame) => frame != null));
+ : _prettifyMember(frame.member!));
+ }).whereType<Frame>());
}
/// Reformats a JS member name to make it look more Dart-like.
@@ -86,7 +87,7 @@
RegExp(r'(_+)closure\d*\.call$'),
// The number of underscores before "closure" indicates how nested it
// is.
- (match) => '.<fn>' * match[1].length)
+ (match) => '.<fn>' * match[1]!.length)
// Get rid of explicitly-generated calls.
.replaceAll(RegExp(r'\.call$'), '')
// Get rid of the top-level method prefix.
@@ -99,5 +100,5 @@
// Convert underscores after identifiers to dots. This runs the risk of
// incorrectly converting members that contain underscores, but those are
// contrary to the style guide anyway.
- .replaceAllMapped(RegExp(r'([a-zA-Z0-9]+)_'), (match) => match[1] + '.');
+ .replaceAllMapped(RegExp(r'([a-zA-Z0-9]+)_'), (match) => match[1]! + '.');
}
diff --git a/pubspec.yaml b/pubspec.yaml
index ff5e7c7..c9db139 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,17 +1,95 @@
name: source_map_stack_trace
-version: 2.0.0
+version: 2.1.0-nullsafety
description: A package for applying source maps to stack traces.
homepage: https://github.com/dart-lang/source_map_stack_trace
environment:
- sdk: '>=2.7.0 <3.0.0'
+ sdk: '>=2.9.0-18.0 <2.9.0'
dependencies:
- path: ^1.0.0
- stack_trace: ^1.0.0
- source_maps: ^0.10.2
+ path: '>=1.8.0-nullsafety <1.8.0'
+ stack_trace: '>=1.10.0-nullsafety <1.10.0'
+ source_maps: '>=0.11.0-nullsafety <0.11.0'
dev_dependencies:
source_span: ^1.6.0
test: ^1.12.0
pedantic: ^1.0.0
+
+dependency_overrides:
+ # Overrides required for a version solve
+ coverage: 0.14.0
+ # NNBD Branches
+ async:
+ git:
+ url: git://github.com/dart-lang/async.git
+ ref: null_safety
+ boolean_selector:
+ git:
+ url: git://github.com/dart-lang/boolean_selector.git
+ ref: null_safety
+ charcode:
+ git:
+ url: git://github.com/dart-lang/charcode.git
+ ref: null_safety
+ collection: 1.15.0-nullsafety
+ js:
+ git:
+ url: git://github.com/dart-lang/sdk.git
+ path: pkg/js
+ matcher:
+ git:
+ url: git://github.com/dart-lang/matcher.git
+ ref: null_safety
+ meta: 1.3.0-nullsafety
+ path:
+ git:
+ url: git://github.com/dart-lang/path.git
+ ref: null_safety
+ pedantic:
+ git:
+ url: git://github.com/dart-lang/pedantic.git
+ ref: null_safety
+ pool:
+ git:
+ url: git://github.com/dart-lang/pool.git
+ ref: null_safety
+ source_maps:
+ git:
+ url: git://github.com/dart-lang/source_maps.git
+ ref: null_safety
+ source_span:
+ git:
+ url: git://github.com/dart-lang/source_span.git
+ ref: null_safety
+ stack_trace:
+ git:
+ url: git://github.com/dart-lang/stack_trace.git
+ ref: null_safety
+ stream_channel:
+ git:
+ url: git://github.com/dart-lang/stream_channel.git
+ ref: null_safety
+ string_scanner:
+ git:
+ url: git://github.com/dart-lang/string_scanner.git
+ ref: null_safety
+ term_glyph:
+ git:
+ url: git://github.com/dart-lang/term_glyph.git
+ ref: null_safety
+ test:
+ git:
+ url: git://github.com/dart-lang/test.git
+ ref: null_safety
+ path: pkgs/test
+ test_api:
+ git:
+ url: git://github.com/dart-lang/test.git
+ ref: null_safety
+ path: pkgs/test_api
+ test_core:
+ git:
+ url: git://github.com/dart-lang/test.git
+ ref: null_safety
+ path: pkgs/test_core
diff --git a/test/source_map_stack_trace_test.dart b/test/source_map_stack_trace_test.dart
index 9f13306..ab92897 100644
--- a/test/source_map_stack_trace_test.dart
+++ b/test/source_map_stack_trace_test.dart
@@ -244,7 +244,7 @@
/// Like [mapStackTrace], but is guaranteed to return a [Trace] so it can be
/// inspected.
Trace _mapTrace(Mapping sourceMap, StackTrace stackTrace,
- {bool minified = false, Map<String, Uri> packageMap, Uri sdkRoot}) {
+ {bool minified = false, Map<String, Uri>? packageMap, Uri? sdkRoot}) {
return Trace.from(mapStackTrace(sourceMap, stackTrace,
minified: minified, packageMap: packageMap, sdkRoot: sdkRoot));
}
@@ -252,13 +252,13 @@
/// Like [mapStackTrace], but is guaranteed to return a [Chain] so it can be
/// inspected.
Chain _mapChain(Mapping sourceMap, StackTrace stackTrace,
- {bool minified = false, Map<String, Uri> packageMap, Uri sdkRoot}) {
+ {bool minified = false, Map<String, Uri>? packageMap, Uri? sdkRoot}) {
return Chain.forTrace(mapStackTrace(sourceMap, stackTrace,
minified: minified, packageMap: packageMap, sdkRoot: sdkRoot));
}
/// Runs the mapper's prettification logic on [member] and returns the result.
-String _prettify(String member) {
+String? _prettify(String member) {
var trace = Trace([Frame(Uri.parse('foo.dart.js'), 10, 11, member)]);
return _mapTrace(_simpleMapping, trace).frames.first.member;
}