aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick
diff options
context:
space:
mode:
authorLuca Di Sera <[email protected]>2024-04-16 14:36:01 +0200
committerLuca Di Sera <[email protected]>2024-04-18 22:30:24 +0200
commitbd6df61c81cbb419514fee0c9fdcfe50b5fca98b (patch)
tree466c7bb7169360b3bc4caf1de2b8b862f439d6d1 /src/quick
parent217dae934785afb9d754bfe92933111809ab0f24 (diff)
qmlsc: Support Math static properties
The javascript Math object presents some static properties that allow access to some general mathematical constants. Currently, `qmlsc` will refuse to generate optimized code for those properties when used in a binding, for example given: ``` import QtQuick Window { width: 200 * Math.PI } ``` `qmlsc` will report a warning and will not generate code for the "width" binding. To allow `qmlsc` to generate optimized code for such cases, the handling of `Math` related properties lookups is now specialized. `QQmlJSTypePropagator::propagatePropertyLookup`, which is called when dealing with an access such as `Math.PI`, was modified to consider the result type a "double" when dealing with properties on the `Math` object. `QQmlJSCodeGenerator::generate_GetLookupHelper`, which generates the code that provides a value for the property access, was modified to special case lookups on the `Math` object. If a property is being looked up on the `Math` object, `qmlsc` will now generate a direct assignment for the output variable to a constant value that is suitable for the accessed property. A test was added to ensure that the snippet from the bug-report now compiles without warnings. A test was added to ensure that the properties from the Math global object have an approximately correct value. Fixes: QTBUG-113150 Change-Id: I8903794fc8ce2b55532a4706e1bda07a7b73f311 Reviewed-by: Ulf Hermann <[email protected]>
Diffstat (limited to 'src/quick')
0 files changed, 0 insertions, 0 deletions