slint/internal/compiler/tests/syntax/basic/states_transitions.slint
Olivier Goffart c990660500 Run the import pass even when building the object tree fails.
This improve the code coverage of syntax_text, so some adjustment had to
be made.
This may add more error in the main file, but this make it the same
behavior as for imported files and lsp who were already running these
passes all the time
2023-07-14 14:13:48 +02:00

139 lines
4.3 KiB
Text

// Copyright © SixtyFPS GmbH <info@slint.dev>
// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-1.1 OR LicenseRef-Slint-commercial
export TestCase := Rectangle {
property<bool> checked;
property <int> border;
states [
checked when checked: {
color: blue; // same as root.color
text.color: red;
border: 42;
}
pressed when touch.pressed: {
color: green;
border: 88;
text.foo.bar: 0;
/// ^error{'text.foo.bar' is not a valid property}
colour: yellow;
/// ^error{'colour' is not a valid property}
/// ^^error{Unknown unqualified identifier 'yellow'}
fox.color: yellow;
/// ^error{'fox' is not a valid element id}
text.fox: yellow;
/// ^error{'fox' not found in 'text'}
/// ^^error{Unknown unqualified identifier 'yellow'}
}
]
transitions [
in pressed: {
animate * { duration: 88ms; }
animate color { duration: 88ms; }
}
out pressed: {
animate color, foo.x { duration: 300ms; }
/// ^error{'foo' is not a valid element id}
//pause: 20ms;
animate border { duration: 120ms; }
animate color, text.text { duration: 300ms; }
/// ^error{'text.text' is not a property that can be animated}
}
]
text := Text {}
touch := TouchArea {}
}
export component NewSyntax {
property<bool> checked;
property <int> border;
property <color> color;
states [
checked when checked: {
color: blue; // same as root.color
text.color: red;
border: 42;
}
pressed when touch.pressed: {
color: green;
border: 88;
text.foo.bar: 0;
/// ^error{'text.foo.bar' is not a valid property}
colour: yellow;
/// ^error{'colour' is not a valid property}
/// ^^error{Unknown unqualified identifier 'yellow'}
fox.color: yellow;
/// ^error{'fox' is not a valid element id}
text.fox: yellow;
/// ^error{'fox' not found in 'text'}
/// ^^error{Unknown unqualified identifier 'yellow'}
in {
animate * { duration: 88ms; }
animate color { duration: 88ms; }
}
out {
animate color, foo.x { duration: 300ms; }
/// ^error{'foo' is not a valid element id}
animate border { duration: 120ms; }
animate color, text.text { duration: 300ms; }
/// ^error{'text.text' is not a property that can be animated}
}
}
]
text := Text {}
touch := TouchArea {}
}
export component OldInNewSyntax {
property<bool> checked;
property <int> border;
property <color> color;
states [
checked when checked: {
color: blue; // same as root.color
text.color: red;
border: 42;
}
pressed when touch.pressed: {
color: green;
border: 88;
text.foo.bar: 0;
/// ^error{'text.foo.bar' is not a valid property}
colour: yellow;
/// ^error{'colour' is not a valid property}
/// ^^error{Unknown unqualified identifier 'yellow'}
fox.color: yellow;
/// ^error{'fox' is not a valid element id}
text.fox: yellow;
/// ^error{'fox' not found in 'text'}
/// ^^error{Unknown unqualified identifier 'yellow'}
}
]
transitions [
/// ^error{'transitions' block are no longer supported. Use 'in \{...\}' and 'out \{...\}' directly in the state definition}
in pressed: {
animate * { duration: 88ms; }
animate color { duration: 88ms; }
}
out pressed: {
animate color, foo.x { duration: 300ms; }
/// ^error{'foo' is not a valid element id}
animate border { duration: 120ms; }
animate color, text.text { duration: 300ms; }
/// ^error{'text.text' is not a property that can be animated}
}
]
text := Text {}
touch := TouchArea {}
}