-
Notifications
You must be signed in to change notification settings - Fork 116
Express rule: query iteration not guarded by existance check #1018
Copy link
Copy link
Open
Labels
after-NWIIssue to be resolved after the IFC NWI (New Work Item) submission to the next ISO cycle.Issue to be resolved after the IFC NWI (New Work Item) submission to the next ISO cycle.iso-TeThe type of update at ISO: Technical (iso-Te), Editorial (iso-Ed) or General (iso-Ge)The type of update at ISO: Technical (iso-Te), Editorial (iso-Ed) or General (iso-Ge)iso-compatibilityIssue affects ISO compatibility policy for IFCIssue affects ISO compatibility policy for IFCproposalStep 2: A well defined proposal has been put forwardStep 2: A well defined proposal has been put forward
Metadata
Metadata
Assignees
Labels
after-NWIIssue to be resolved after the IFC NWI (New Work Item) submission to the next ISO cycle.Issue to be resolved after the IFC NWI (New Work Item) submission to the next ISO cycle.iso-TeThe type of update at ISO: Technical (iso-Te), Editorial (iso-Ed) or General (iso-Ge)The type of update at ISO: Technical (iso-Te), Editorial (iso-Ed) or General (iso-Ge)iso-compatibilityIssue affects ISO compatibility policy for IFCIssue affects ISO compatibility policy for IFCproposalStep 2: A well defined proposal has been put forwardStep 2: A well defined proposal has been put forward
Most of our rules (I don't have a static analyser, not so sure) that perform iteration or get the bounds of an optional aggregate are guarded by an prior existence check. In my implementation that converts to python that also mean that due to short circuiting in the if-statement the right hand conjunct that contains the query expression or bounds check on the NIL value is never executed. Therefore at this point in time, my implementations fails on IfcPropertyListValue.WR31. I think this is my problem, because the spec probably dictates that this somehow folds to indeterminate, but for clarity and consistency I would still propose to update this in the spec.
Cases with existence check
IfcIndexedPolyCurve
IfcConsecutiveSegments(Segments) calls HIINDEX(Segments)
IfcPropertyEnumeratedValue
IfcPropertyTableValue
Case without existence check
https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcPropertyListValue.htm
Proposal
change to
WR31: When present, all values within the list of values shall be of the same measure type.