blob: 3015852e1e59b7110c3315db7bb30df8ba83de2c [file] [log] [blame]
library;
//
// Problems in library:
//
// pkg/front_end/testcases/general/issue44654.dart:7:7: Error: A value of type 'bool?' can't be assigned to a variable of type 'bool' because 'bool?' is nullable and 'bool' isn't.
// if (string?.isNotEmpty) ;
// ^
//
import self as self;
import "dart:core" as core;
static method test2() void {
has-declared-initializer core::String? string = null;
if(invalid-expression "pkg/front_end/testcases/general/issue44654.dart:7:7: Error: A value of type 'bool?' can't be assigned to a variable of type 'bool' because 'bool?' is nullable and 'bool' isn't.
if (string?.isNotEmpty) ;
^" in let core::bool? #t1 = let final core::String? #t2 = string in #t2 == null ?{core::bool?} null : #t2{core::String}.{core::String::isNotEmpty}{core::bool} in #t1 == null ?{core::bool} #t1 as{TypeError} core::bool : #t1{core::bool})
;
}
static method main() void {
try {
self::test2();
}
on core::Object catch(final core::Object e, final core::StackTrace s) {
self::checkFirstLineHasPosition(s);
}
}
static method checkFirstLineHasPosition(core::StackTrace stackTrace) void {
core::String firstLine = "${stackTrace}".{core::String::split}("
"){(core::Pattern) core::List<core::String>}.{core::Iterable::firstWhere}((core::String line) core::bool => line.{core::String::startsWith}("#0"){(core::Pattern, [core::int]) core::bool}){((core::String) core::bool, {orElse: () →? core::String}) core::String};
core::int lastParen = firstLine.{core::String::lastIndexOf}(")"){(core::Pattern, [core::int?]) core::int};
if(!(lastParen =={core::num::==}{(core::Object) core::bool} 1.{core::int::unary-}(){() core::int})) {
core::int secondColon = firstLine.{core::String::lastIndexOf}(":", lastParen.{core::num::-}(1){(core::num) core::int}){(core::Pattern, [core::int?]) core::int};
if(!(secondColon =={core::num::==}{(core::Object) core::bool} 1.{core::int::unary-}(){() core::int})) {
core::int firstColon = firstLine.{core::String::lastIndexOf}(":", secondColon.{core::num::-}(1){(core::num) core::int}){(core::Pattern, [core::int?]) core::int};
core::String lineText = firstLine.{core::String::substring}(firstColon.{core::num::+}(1){(core::num) core::int}, secondColon){(core::int, [core::int?]) core::String};
core::String posText = firstLine.{core::String::substring}(secondColon.{core::num::+}(1){(core::num) core::int}, lastParen){(core::int, [core::int?]) core::String};
core::int? line = core::int::tryParse(lineText);
core::int? pos = core::int::tryParse(posText);
if(!(line == null) && !(pos == null)) {
core::print("Found position ${line{core::int}}:${pos{core::int}}");
return;
}
}
}
throw "No position found in \"${firstLine}\"";
}
Extra constant evaluation status:
Evaluated: InstanceInvocation @ org-dartlang-testcase:///issue44654.dart:23:20 -> IntConstant(-1)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///issue44654.dart:25:24 -> IntConstant(-1)
Extra constant evaluation: evaluated: 56, effectively constant: 2