mirror of
https://github.com/AdaCore/langkit.git
synced 2026-02-12 12:28:12 -08:00
When `x` is null, the result of this expression must be `z`. Because of incorrect lowering of the `or?` operator to abstract expressions, the left operand (`x?.y`) was considered as a prefix, and so the whole expression returned null when any prefix in `x?.y` (thus `x` included) was null. The `or?` operator has no prefix, since it does not use dot notation, so its lowering must not create a prefix.
49 lines
1.2 KiB
Plaintext
49 lines
1.2 KiB
Plaintext
main.py: Running...
|
|
p_field_1(None) = None
|
|
p_field_1(<n1>) = None
|
|
p_field_1(<n1.n2>) = <n1>
|
|
p_field_1(<n1.n2.n3>) = <n1.n2>
|
|
|
|
p_field_2(None) = None
|
|
p_field_2(<n1>) = <PropertyError: main.txt:1:1-1:9: dereferencing a null access
|
|
p_field_2(<n1.n2>) = None
|
|
p_field_2(<n1.n2.n3>) = <n1>
|
|
|
|
p_field_3(None) = <PropertyError: main.txt:1:1-1:9: dereferencing a null access
|
|
p_field_3(<n1>) = None
|
|
p_field_3(<n1.n2>) = None
|
|
p_field_3(<n1.n2.n3>) = <n1>
|
|
|
|
p_field_4(None) = None
|
|
p_field_4(<n1>) = None
|
|
p_field_4(<n1.n2>) = None
|
|
p_field_4(<n1.n2.n3>) = <n1>
|
|
|
|
p_call_1(None) = None
|
|
p_call_1(<n1>) = None
|
|
p_call_1(<n1.n2>) = <n1>
|
|
p_call_1(<n1.n2.n3>) = <n1.n2>
|
|
|
|
p_call_2(None) = None
|
|
p_call_2(<n1>) = <PropertyError: main.txt:1:1-1:9: dereferencing a null access
|
|
p_call_2(<n1.n2>) = None
|
|
p_call_2(<n1.n2.n3>) = <n1>
|
|
|
|
p_call_3(None) = <PropertyError: main.txt:1:1-1:9: dereferencing a null access
|
|
p_call_3(<n1>) = None
|
|
p_call_3(<n1.n2>) = None
|
|
p_call_3(<n1.n2.n3>) = <n1>
|
|
|
|
p_call_4(None) = None
|
|
p_call_4(<n1>) = None
|
|
p_call_4(<n1.n2>) = None
|
|
p_call_4(<n1.n2.n3>) = <n1>
|
|
|
|
p_or_1(None, <n1>, <n1.n2>) = <n1.n2>
|
|
p_or_1(<n1>, None, <n1.n2>) = <n1.n2>
|
|
p_or_1(<n1>, <n1.n2>, None) = <n1.n2>
|
|
p_or_1(<n1>, <n1.n2>, <n1.n2.n3>) = <n1.n2>
|
|
|
|
main.py: Done.
|
|
Done
|