diff --git a/language/test/memoized.ceylon b/language/test/memoized.ceylon new file mode 100644 index 00000000000..cf2eb0ed90a --- /dev/null +++ b/language/test/memoized.ceylon @@ -0,0 +1,42 @@ +class Memoized() { + variable value i = 0; + shared late Integer memoized = ++i; +} +variable Integer memoized_i = 0; +shared late Integer memoized_1 = ++memoized_i; +shared late Integer memoized_2 = ++memoized_i; + +@test +shared void memoized() { + variable value m = Memoized(); + check(1 == m.memoized); + check(1 == m.memoized); + try { + m.memoized = -100; + throw; + } catch (InitializationError e) {} + + m = Memoized(); + m.memoized = -100; + check(-100 == m.memoized); + check(-100 == m.memoized); + try { + m.memoized = -200; + throw; + } catch (InitializationError e) {} + + check(1 == memoized_1); + check(1 == memoized_1); + try { + memoized_1 = -100; + throw; + } catch (InitializationError e) {} + + memoized_2 = -100; + check(-100 == memoized_2); + check(-100 == memoized_2); + try { + memoized_2 = -200; + throw; + } catch (InitializationError e) {} +} \ No newline at end of file diff --git a/language/test/run.ceylon b/language/test/run.ceylon index dd27e4cb334..8769f340170 100644 --- a/language/test/run.ceylon +++ b/language/test/run.ceylon @@ -19,6 +19,8 @@ void runTests() { characters(); print("Strings"); strings(); + print("Memoized"); + memoized(); print("Lists"); lists(); print("Sequences");