Fix initialization order of globals

This commit is contained in:
Olivier Goffart 2021-05-20 09:54:24 +02:00 committed by Olivier Goffart
parent 6d48468823
commit a071738a4a
3 changed files with 53 additions and 4 deletions

View file

@ -18,6 +18,7 @@ TestCase := Rectangle {
callback set_a(int);
set_a(a) => { Glob.a = a; }
property <int> value1: Glob.b;
property <bool> test: value1 == 3+3;
}
/*

View file

@ -0,0 +1,48 @@
/* LICENSE BEGIN
This file is part of the SixtyFPS Project -- https://sixtyfps.io
Copyright (c) 2020 Olivier Goffart <olivier.goffart@sixtyfps.io>
Copyright (c) 2020 Simon Hausmann <simon.hausmann@sixtyfps.io>
SPDX-License-Identifier: GPL-3.0-only
This file is also available under commercial licensing terms.
Please contact info@sixtyfps.io for more information.
LICENSE END */
// This tests that constant property from global are properly initialized
global Glob := {
property <int> a: 3;
property <int> b: a + 3;
}
global Glob2 := {
property <int> a: other;
property <int> other: 5;
}
TestCase := Rectangle {
r := Rectangle {
property <int> value1: Glob.b;
property <int> value2: true ? Glob2.a : 88;
}
property <bool> test: r.value1 + r.value2 == 3+3 +5;
}
/*
```rust
let instance = TestCase::new();
assert!(instance.get_test());
```
```cpp
auto handle = TestCase::create();
const TestCase &instance = *handle;
assert(instance.get_test());
```
```js
let instance = new sixtyfps.TestCase({});
assert(instance.test);
```
*/