slint/internal/compiler/tests/syntax/functions/functions.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

56 lines
1.8 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
Abc := Rectangle {
function par() {}
}
export Xxx := Rectangle {
function fooo(a: int, a: int) -> int { return a; }
// ^error{Duplicated argument name 'a'}
function plop2() -> int {
// ^error{Cannot convert string to int}
return 45;
"xxx"
}
function plop3() { return 45; "xxx" }
function plop4(string: int) -> int { return "45"; }
// ^error{Cannot convert string to int}
function plop5() { plop4("456") }
// ^error{Cannot convert string to int}
function background() {}
// ^error{Cannot declare function 'background' when a property with the same name exists}
Abc {
property <int> par;
// ^error{Cannot declare property 'par' when a callback with the same name exists}
callback par();
// ^error{Cannot declare callback 'par' when a function with the same name exists}
}
TouchArea {
function clicked() {}
// ^error{Cannot override 'clicked'}
}
Abc { par => {} }
// ^error{'par' is not a callback in Abc}
aa := Abc { par: 42; }
// ^error{Cannot assign to par in Abc because it does not have a valid property type}
Abc { par <=> aa.par; }
// ^error{Cannot assign to par in Abc because it does not have a valid property type}
// ^^error{Cannot bind to a function}
// ^^^error{The function 'par' is private. Annotate it with 'public' to make it accessible from other components}
fooo => {}
// ^error{'fooo' is not a callback in Rectangle}
}