Files
sdk/tests/lib/mirrors/method_mirror_location_test.dart
T
Ryan Macnak 081e2acf29 [test] Update copied mirrors tests for Dart 3.
Bug: https://github.com/dart-lang/sdk/issues/40045
Change-Id: Ic0f62843d61b613e61f434b72b9553dd1e6897af
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/132441
Reviewed-by: Ben Konyi <bkonyi@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2020-01-23 18:09:37 +00:00

78 lines
2.5 KiB
Dart

// Copyright (c) 2014, 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.
library test.method_location;
import "dart:mirrors";
import "package:expect/expect.dart";
part 'method_mirror_location_other.dart';
// We only check for a suffix of the uri because the test might be run from
// any number of absolute paths.
expectLocation(Mirror mirror, String uriSuffix, int line, int column) {
MethodMirror methodMirror;
if (mirror is ClosureMirror) {
methodMirror = mirror.function;
} else {
methodMirror = mirror as MethodMirror;
}
Expect.isTrue(methodMirror is MethodMirror);
final location = methodMirror.location!;
final uri = location.sourceUri;
Expect.isTrue(uri.toString().endsWith(uriSuffix), "Expected suffix $uriSuffix in $uri");
Expect.equals(line, location.line, "line");
Expect.equals(column, location.column, "column");
}
class ClassInMainFile {
ClassInMainFile();
method() {}
}
void topLevelInMainFile() {}
spaceIdentedInMainFile() {}
tabIdentedInMainFile() {}
class HasImplicitConstructor {}
typedef bool Predicate(num n);
main() {
localFunction(x) {
return x;
}
String mainSuffix = 'method_mirror_location_test.dart';
String otherSuffix = 'method_mirror_location_other.dart';
// This file.
expectLocation(reflectClass(ClassInMainFile).declarations[#ClassInMainFile]!,
mainSuffix, 31, 3);
expectLocation(
reflectClass(ClassInMainFile).declarations[#method]!, mainSuffix, 33, 3);
expectLocation(reflect(topLevelInMainFile), mainSuffix, 36, 1);
expectLocation(reflect(spaceIdentedInMainFile), mainSuffix, 37, 3);
expectLocation(reflect(tabIdentedInMainFile), mainSuffix, 38, 2);
expectLocation(reflect(localFunction), mainSuffix, 45, 3);
// Another part.
expectLocation(reflectClass(ClassInOtherFile).declarations[#ClassInOtherFile]!,
otherSuffix, 8, 3);
expectLocation(
reflectClass(ClassInOtherFile).declarations[#method]!, otherSuffix, 10, 3);
expectLocation(reflect(topLevelInOtherFile), otherSuffix, 13, 1);
expectLocation(reflect(spaceIdentedInOtherFile), otherSuffix, 15, 3);
expectLocation(reflect(tabIdentedInOtherFile), otherSuffix, 17, 2);
// Synthetic methods.
Expect.isNull(reflectClass(HasImplicitConstructor)
.declarations[#HasImplicitConstructor]!
.location);
Expect.isNull(
(reflectType(Predicate) as TypedefMirror).referent.callMethod.location);
}