From b049955b52bcdf654e7b27530105745b0ca77ac0 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Mon, 2 Nov 2020 16:37:49 +0100 Subject: [PATCH] Fix StmtContext.findSubstatementArgument()/hasSubstatement() When we are searching for a substatement we should also mind that it can have its effective statement built. If we do not, we can end up picking a statement which has been disabled by deviate. Change-Id: I27743b5acbb2f617497d329423b239f363c54258 JIRA: YANGTOOLS-1157 Signed-off-by: miroslav.kovac Signed-off-by: Robert Varga --- .../yang/parser/spi/meta/StmtContextDefaults.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/StmtContextDefaults.java b/yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/StmtContextDefaults.java index a5692a860d..59fb76f71c 100644 --- a/yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/StmtContextDefaults.java +++ b/yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/StmtContextDefaults.java @@ -33,7 +33,7 @@ public final class StmtContextDefaults { public static > @NonNull Optional findSubstatementArgument( final @NonNull StmtContext stmt, final @NonNull Class type) { return stmt.allSubstatementsStream() - .filter(ctx -> ((StmtContext) ctx).producesEffective(type)) + .filter(ctx -> ctx.isSupportedToBuildEffective() && ((StmtContext) ctx).producesEffective(type)) .findAny() .map(ctx -> (A) ctx.coerceStatementArgument()); } @@ -47,7 +47,8 @@ public final class StmtContextDefaults { */ @SuppressWarnings({ "rawtypes", "unchecked" }) public static boolean hasSubstatement(final @NonNull StmtContext stmt, - @SuppressWarnings("rawtypes") final @NonNull Class> type) { - return stmt.allSubstatementsStream().anyMatch(ctx -> ((StmtContext) ctx).producesEffective(type)); + final @NonNull Class> type) { + return stmt.allSubstatementsStream() + .anyMatch(ctx -> ctx.isSupportedToBuildEffective() && ((StmtContext) ctx).producesEffective(type)); } } -- 2.36.6