Index: pkg/kernel/testcases/type-propagation/unused_methods.baseline.txt |
diff --git a/pkg/kernel/testcases/type-propagation/unused_methods.baseline.txt b/pkg/kernel/testcases/type-propagation/unused_methods.baseline.txt |
new file mode 100644 |
index 0000000000000000000000000000000000000000..5501bc727351f025cc37b4f55858f6586031db5d |
--- /dev/null |
+++ b/pkg/kernel/testcases/type-propagation/unused_methods.baseline.txt |
@@ -0,0 +1,85 @@ |
+library; |
+import self as self; |
+import "dart:core" as core; |
+ |
+class UnusedClass extends core::Object { |
+ constructor •() → void |
+ : super core::Object::•() |
+ ; |
+} |
+abstract class UsedAsBaseClass extends core::Object { |
+ constructor •() → void |
+ : super core::Object::•() |
+ ; |
+ method usedInSubclass() → void/Null { |
+ core::print("Unused"); |
+ } |
+ method calledFromB() → void/Null { |
+ this.calledFromSubclass(); |
+ } |
+ method calledFromSubclass() → void/Null { |
+ core::print("Unused"); |
+ } |
+} |
+class UsedAsInterface extends core::Object { |
+ constructor •() → void |
+ : super core::Object::•() |
+ ; |
+ method usedInSubclass() → void/Null { |
+ core::print("Unused"); |
+ } |
+} |
+class InstantiatedButMethodsUnused extends core::Object { |
+ constructor •() → void |
+ : super core::Object::•() |
+ ; |
+ method usedInSubclass() → void/Null { |
+ core::print("Unused"); |
+ } |
+} |
+class ClassA extends self::UsedAsBaseClass implements self::UsedAsInterface, self::InstantiatedButMethodsUnused { |
+ constructor •() → void |
+ : super self::UsedAsBaseClass::•() |
+ ; |
+ method usedInSubclass() → void/Null { |
+ core::print("A"); |
+ } |
+} |
+class ClassB extends self::UsedAsBaseClass implements self::UsedAsInterface, self::InstantiatedButMethodsUnused { |
+ constructor •() → void |
+ : super self::UsedAsBaseClass::•() |
+ ; |
+ method usedInSubclass() → void/Null { |
+ core::print("B"); |
+ this.calledFromB(); |
+ } |
+ method calledFromSubclass() → void/Null {} |
+} |
+static method baseClassCall(self::UsedAsBaseClass/self::UsedAsBaseClass+ {other} object) → void/Null { |
+ object.usedInSubclass(); |
+} |
+static method interfaceCall(self::UsedAsInterface/self::UsedAsBaseClass+ {other} object) → void/Null { |
+ object.usedInSubclass(); |
+} |
+static method exactCallA(self::ClassA/self::ClassA! {other} object) → void/Null { |
+ object.usedInSubclass(); |
+} |
+static method exactCallB(self::ClassB/self::ClassB! {other} object) → void/Null { |
+ object.usedInSubclass(); |
+} |
+static method unusedTopLevel() → dynamic/Null { |
+ core::print("Unused"); |
+} |
+static method usedTopLevel() → dynamic/Null {} |
+static method main() → dynamic/Null { |
+ self::usedTopLevel(); |
+ self::ClassA/self::ClassA! {other} a = new self::ClassA::•(); |
+ self::exactCallA(a); |
+ self::baseClassCall(a); |
+ self::interfaceCall(a); |
+ self::ClassB/self::ClassB! {other} b = new self::ClassB::•(); |
+ self::exactCallB(b); |
+ self::baseClassCall(b); |
+ self::interfaceCall(b); |
+ new self::InstantiatedButMethodsUnused::•(); |
+} |