Comments (5)
Record types are supposed to be normalized by sorting the field names, since field order shouldn't affect the type.
from nballerina.
ballerina-platform/ballerina-release#2337 should be reverted once this is fixed.
from nballerina.
It turned out the bug was not related to memoization. The culprit is mappingInhabited()
.
In the two cases where T74
and T75
are at the bottom [1] vs the top [2], we have the same posList
with a single atom for T74
and negList
with two atoms for T75
, T315
. However, the negList
order is different in the two cases.
- In case [1] (which gives the correct result):
posList: T74
, negList: T75
, T315
In the first round at mappingInhabited()
, T74
gets canceled out by the T75
thus exiting early saying mapping formular is empty.
- In case[2] (which gives the wrong result):
posList: T74
, negList: T315
, T75
In the first round at mappingInhabited()
, T74
does not get canceled out by the T315
thus it goes for another round. In this logic, we go back and forth for negAtom being T315
and T75
eventually resulting in the wrong result.
from nballerina.
In the case[2], mappingInhabited()
turned to be behaved as intended. However, the problem seems to be caused by the pairing.
In the initial sample, replacing "X" with "x" gets the test passed.
For record {| T a; 65 X; |}
and record {| int:Signed8 X; |}
pairing algorithm returns following in its first iteration,
- name:
"X"
- posType:
T
- negType:
int:Signed8
The reason is it expects the record fields to be in sorted ascending order.
from nballerina.
ballerina-platform/ballerina-release#2337 should be reverted once this is fixed.
Reverts with ballerina-platform/ballerina-release#2339
from nballerina.
Related Issues (20)
- See if we can simply `listFormulaIsEmpty()` with introduction of `undef`
- `SyntaxNode` don't distinguish between exclusive record type without fields and map
- Distinguish `record {| T...; |}` vs `map<T>` in ST and AST HOT 1
- Implement backend support for optional record fields
- Assigning a vararg function to a function value whose type has a fixed number of args is failing
- `testBirCompile` test is failling with 2201.5.0 RC1 HOT 6
- Parsing binary type descriptors with function types is failing
- Use property based testing to validate function subtyping and application
- Add support for `never` type
- Add support for object type HOT 1
- Make complement op for function type explicit
- Confusing behaviour around compliment for "sugared" types HOT 1
- Extend BIR to support closures HOT 3
- Implement closures for final values
- Make it possible for older jBallerina versions to use nBallerina for validation HOT 2
- Implement escape analysis for closures
- Type testing with `FunctionConstOperands` fail to compile
- Use exact bit to check function value exactness
- Calculating sub-element address using GEP fails on AArch64 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from nballerina.