From f84043f26ece6f89f4381b94e31ac9b87869ccaf Mon Sep 17 00:00:00 2001 From: Kamil Patryk Kozakowski Date: Sun, 28 Jun 2026 15:23:22 +0200 Subject: [PATCH] up --- .../service/AbstractCallGraphEngine.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/analysis/service/AbstractCallGraphEngine.java b/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/analysis/service/AbstractCallGraphEngine.java index 629b20c..acd71e1 100644 --- a/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/analysis/service/AbstractCallGraphEngine.java +++ b/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/analysis/service/AbstractCallGraphEngine.java @@ -345,11 +345,18 @@ public abstract class AbstractCallGraphEngine implements CallGraphEngine { sourceMethod = "inline-instantiation"; polymorphicEvents.add(declaredType); } else if (exprNode instanceof ConditionalExpression cond) { - if (cond.getThenExpression() instanceof ClassInstanceCreation cicThen) { - polymorphicEvents.add(click.kamil.springstatemachineexporter.ast.common.AstUtils.extractSimpleTypeName(cicThen.getType())); - } - if (cond.getElseExpression() instanceof ClassInstanceCreation cicElse) { - polymorphicEvents.add(click.kamil.springstatemachineexporter.ast.common.AstUtils.extractSimpleTypeName(cicElse.getType())); + List branches = new ArrayList<>(); + branches.add(cond.getThenExpression()); + branches.add(cond.getElseExpression()); + for (Expression branch : branches) { + List tracedBranch = variableTracer.traceVariableAll(branch); + for (Expression tb : tracedBranch) { + if (tb instanceof ClassInstanceCreation cic) { + polymorphicEvents.add(click.kamil.springstatemachineexporter.ast.common.AstUtils.extractSimpleTypeName(cic.getType())); + } else { + constantExtractor.extractConstantsFromExpression(tb, polymorphicEvents); + } + } } sourceMethod = "inline-ternary"; declaredType = polymorphicEvents.isEmpty() ? null : polymorphicEvents.get(0);