|
24 | 24 | import com.adacore.lkql_jit.nodes.expressions.block_expression.BlockBody; |
25 | 25 | import com.adacore.lkql_jit.nodes.expressions.block_expression.BlockBodyDecl; |
26 | 26 | import com.adacore.lkql_jit.nodes.expressions.block_expression.BlockExpr; |
| 27 | +import com.adacore.lkql_jit.nodes.expressions.dot.BaseDotAccess; |
27 | 28 | import com.adacore.lkql_jit.nodes.expressions.dot.DotAccessNodeGen; |
28 | 29 | import com.adacore.lkql_jit.nodes.expressions.dot.DotAccessWrapperNodeGen; |
| 30 | +import com.adacore.lkql_jit.nodes.expressions.dot.SafeDotAccessNodeGen; |
29 | 31 | import com.adacore.lkql_jit.nodes.expressions.literals.*; |
30 | 32 | import com.adacore.lkql_jit.nodes.expressions.match.Match; |
31 | 33 | import com.adacore.lkql_jit.nodes.expressions.match.MatchArm; |
@@ -524,14 +526,14 @@ private Expr buildExpr(Liblktlang.Expr expr) { |
524 | 526 | ); |
525 | 527 | } else if (expr instanceof DotExpr dotExpr) { |
526 | 528 | final var memberIdentifier = dotExpr.fSuffix(); |
527 | | - return DotAccessWrapperNodeGen.create( |
528 | | - loc(dotExpr), |
529 | | - DotAccessNodeGen.create( |
530 | | - loc(dotExpr), |
531 | | - new Identifier(loc(memberIdentifier), memberIdentifier.getText()), |
532 | | - buildExpr(dotExpr.fPrefix()) |
533 | | - ) |
534 | | - ); |
| 529 | + final var loc = loc(dotExpr); |
| 530 | + final var id = new Identifier(loc(memberIdentifier), memberIdentifier.getText()); |
| 531 | + final var prefix = buildExpr(dotExpr.fPrefix()); |
| 532 | + final BaseDotAccess dotAccess = (dotExpr.fNullCond() instanceof |
| 533 | + Liblktlang.NullCondQualifierPresent) |
| 534 | + ? SafeDotAccessNodeGen.create(loc, id, prefix) |
| 535 | + : DotAccessNodeGen.create(loc, id, prefix); |
| 536 | + return DotAccessWrapperNodeGen.create(dotAccess.getSourceSection(), dotAccess); |
535 | 537 | } else if (expr instanceof MatchExpr matchExpr) { |
536 | 538 | Expr matchVal = buildExpr(matchExpr.fMatchExpr()); |
537 | 539 | var arms = Arrays.stream(matchExpr.fBranches().children()) |
|
0 commit comments