diff --git a/Examples/ErrorReporting/Cleanup2.kt b/Examples/ErrorReporting/Cleanup2.kt index 4e564a42..2bfef99b 100644 --- a/Examples/ErrorReporting/Cleanup2.kt +++ b/Examples/ErrorReporting/Cleanup2.kt @@ -4,7 +4,6 @@ import atomictest.eq fun main(args: Array) { localFile("Cleanup2.kt").useLines { - it.filter { "//" in it }.first() eq // [1] - "// ErrorReporting/Cleanup2.kt" - } + it.filter { "//" in it }.first() // [1] + } eq "// ErrorReporting/Cleanup2.kt" } diff --git a/Examples/ErrorReporting/results.txt b/Examples/ErrorReporting/results.txt deleted file mode 100644 index 17237c50..00000000 --- a/Examples/ErrorReporting/results.txt +++ /dev/null @@ -1 +0,0 @@ -Results \ No newline at end of file diff --git a/Examples/ErrorReporting/trace_empty.txt b/Examples/ErrorReporting/trace_empty.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/Examples/ErrorReporting/trace_real.txt b/Examples/ErrorReporting/trace_real.txt deleted file mode 100644 index 8b137891..00000000 --- a/Examples/ErrorReporting/trace_real.txt +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Examples/FromKotlin/NullableJavaTool.java b/Examples/FromKotlin/NullableJavaTool.java new file mode 100644 index 00000000..ff25db03 --- /dev/null +++ b/Examples/FromKotlin/NullableJavaTool.java @@ -0,0 +1,9 @@ +// FromKotlin/NullableJavaTool.java +package FromKotlin; + +public class NullableJavaTool { + public static NullableJavaTool get() { + return null; + } + public void method() {} +} diff --git a/Examples/FromKotlin/UseNullableJavaTool.kt b/Examples/FromKotlin/UseNullableJavaTool.kt new file mode 100644 index 00000000..b61b96a5 --- /dev/null +++ b/Examples/FromKotlin/UseNullableJavaTool.kt @@ -0,0 +1,17 @@ +// FromKotlin/UseNullableJavaTool.kt +import FromKotlin.NullableJavaTool +import atomictest.* + +fun main(args: Array) { + val a = NullableJavaTool.get() + capture { + val b: NullableJavaTool = + NullableJavaTool.get() + } eq "IllegalStateException" + val c: NullableJavaTool? = + NullableJavaTool.get() + capture { + a.method() + } eq "NullPointerException" + c?.method() eq null +} diff --git a/Examples/constructors/Coffee.kt b/Examples/constructors/Coffee.kt index 50764391..85b9efb2 100644 --- a/Examples/constructors/Coffee.kt +++ b/Examples/constructors/Coffee.kt @@ -1,5 +1,5 @@ // Constructors/Coffee.kt -import atomictest.eq +import atomictest.* class Coffee( val shots: Int = 2, @@ -9,7 +9,7 @@ class Coffee( val syrup: String = "") { var result = "" init { - println(listOf( + trace(listOf( shots, decaf, milk, toGo, syrup)) getCup() pourShots() @@ -42,4 +42,8 @@ fun main(args: Array) { toGo = true, syrup = "Chocolate") mocha.result eq "ToGoCup decaf shot decaf shot Chocolate" + trace eq """ +[2, false, false, false, ] +[2, true, false, true, Chocolate] +""" } diff --git a/Examples/secondaryConstructors/GardenGnome.kt b/Examples/secondaryConstructors/GardenGnome.kt index 7f2fd4ed..d508ee58 100644 --- a/Examples/secondaryConstructors/GardenGnome.kt +++ b/Examples/secondaryConstructors/GardenGnome.kt @@ -1,10 +1,10 @@ // SecondaryConstructors/GardenGnome.kt -import atomictest.eq +import atomictest.* class GardenGnome(val height: Double, val weight: Double, var happy: Boolean) { init { - println("In primary constructor") + trace("In primary constructor") } var painted = true fun magic(level: Int) = "Poof! $level" @@ -22,4 +22,9 @@ fun main(args: Array) { "20.0 110.0 false true" GardenGnome(happy=true).show() eq "15.0 100.0 true true" + trace eq +""" +In primary constructor +In primary constructor +""" } diff --git a/Examples/whenExpressions/WhenAsStatement.kt b/Examples/whenExpressions/WhenAsStatement.kt index 4f14b833..72b9fdac 100644 --- a/Examples/whenExpressions/WhenAsStatement.kt +++ b/Examples/whenExpressions/WhenAsStatement.kt @@ -1,9 +1,16 @@ // WhenExpressions/WhenAsStatement.kt +import atomictest.* fun checkColor(color: String) { - when (color) { - "red" -> println("RED") - "blue" -> println("BLUE") - "green" -> println("GREEN") + when(color) { + "red" -> trace("RED") + "blue" -> trace("BLUE") + "green" -> trace("GREEN") } } + +fun main(args: Array) { + checkColor("white") + checkColor("blue") + trace eq "BLUE" +} diff --git a/Examples/whenExpressions/WhenExpressions.kt b/Examples/whenExpressions/WhenExpressions.kt index 5eee0e54..c2f64f5b 100644 --- a/Examples/whenExpressions/WhenExpressions.kt +++ b/Examples/whenExpressions/WhenExpressions.kt @@ -2,7 +2,7 @@ import atomictest.eq fun matchColor(color: String) = - when (color) { // [1] + when(color) { // [1] "red" -> "RED" // [2] "blue" -> "BLUE" "green" -> "GREEN" diff --git a/Experiments/JHelper.java b/Experiments/JHelper.java new file mode 100644 index 00000000..8f97cf2d --- /dev/null +++ b/Experiments/JHelper.java @@ -0,0 +1,5 @@ +//package jhelper; +public class JHelper { + public static JHelper jF() { return null; } + public void M() {} +} \ No newline at end of file diff --git a/Experiments/UseJHelper.kt b/Experiments/UseJHelper.kt new file mode 100644 index 00000000..b81617a9 --- /dev/null +++ b/Experiments/UseJHelper.kt @@ -0,0 +1,5 @@ +import jhelper.* +fun main(args: Array) { + val a = JHelper.jF() + a.M() //Oops! +} \ No newline at end of file diff --git a/gradle/tasks.gradle b/gradle/tasks.gradle index 3cca58c5..58a4124e 100644 --- a/gradle/tasks.gradle +++ b/gradle/tasks.gradle @@ -1513,6 +1513,11 @@ task UseBeanClass(type: JavaExec) { main = 'UseBeanClassKt' } +task UseNullableJavaTool(type: JavaExec) { + classpath kotlinClassPath + main = 'UseNullableJavaToolKt' +} + task UsingAtomicTest(type: JavaExec) { classpath kotlinClassPath main = 'UsingAtomicTestKt' @@ -1578,6 +1583,11 @@ task WhenAndSmartCasts(type: JavaExec) { main = 'smartcasts.WhenAndSmartCastsKt' } +task WhenAsStatement(type: JavaExec) { + classpath kotlinClassPath + main = 'WhenAsStatementKt' +} + task WhenExpressions(type: JavaExec) { classpath kotlinClassPath main = 'WhenExpressionsKt' @@ -1915,6 +1925,7 @@ task run (dependsOn: [ 'UnpredictableHashing', 'UseALibrary', 'UseBeanClass', + 'UseNullableJavaTool', 'UsingAtomicTest', 'UsingDataClass', 'UsingKotlinClass', @@ -1928,6 +1939,7 @@ task run (dependsOn: [ 'Vars', 'VisibleClassArgs', 'WhenAndSmartCasts', + 'WhenAsStatement', 'WhenExpressions', 'WhileLoop', 'WhyFlatMap',