blob: ad48c4558f2eec7df6c9fc5bbaa9de9b060e4ede [file] [log] [blame]
// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
// @dart=2.9
// @dart = 2.9
void test2() {
String string = null;
if (string?.isNotEmpty) ;
}
void main() {
try {
test2();
} catch (e, s) {
checkFirstLineHasPosition(s);
}
}
void checkFirstLineHasPosition(StackTrace stackTrace) {
String firstLine = '$stackTrace'
.split('\n')
.firstWhere((String line) => line.startsWith('#0'));
int lastParen = firstLine.lastIndexOf(')');
if (lastParen != -1) {
int secondColon = firstLine.lastIndexOf(':', lastParen - 1);
if (secondColon != -1) {
int firstColon = firstLine.lastIndexOf(':', secondColon - 1);
String lineText = firstLine.substring(firstColon + 1, secondColon);
String posText = firstLine.substring(secondColon + 1, lastParen);
int line = int.tryParse(lineText);
int pos = int.tryParse(posText);
if (line != null && pos != null) {
print('Found position $line:$pos');
return;
}
}
}
throw 'No position found in "$firstLine"';
}