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 <miroslav.kovac@pantheon.tech>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
public static <A, E extends EffectiveStatement<A, ?>> @NonNull Optional<A> findSubstatementArgument(
final @NonNull StmtContext<?, ?, ?> stmt, final @NonNull Class<E> type) {
return stmt.allSubstatementsStream()
public static <A, E extends EffectiveStatement<A, ?>> @NonNull Optional<A> findSubstatementArgument(
final @NonNull StmtContext<?, ?, ?> stmt, final @NonNull Class<E> type) {
return stmt.allSubstatementsStream()
- .filter(ctx -> ((StmtContext) ctx).producesEffective(type))
+ .filter(ctx -> ctx.isSupportedToBuildEffective() && ((StmtContext) ctx).producesEffective(type))
.findAny()
.map(ctx -> (A) ctx.coerceStatementArgument());
}
.findAny()
.map(ctx -> (A) ctx.coerceStatementArgument());
}
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
public static boolean hasSubstatement(final @NonNull StmtContext<?, ?, ?> stmt,
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
public static boolean hasSubstatement(final @NonNull StmtContext<?, ?, ?> stmt,
- @SuppressWarnings("rawtypes") final @NonNull Class<? extends EffectiveStatement<?, ?>> type) {
- return stmt.allSubstatementsStream().anyMatch(ctx -> ((StmtContext) ctx).producesEffective(type));
+ final @NonNull Class<? extends EffectiveStatement<?, ?>> type) {
+ return stmt.allSubstatementsStream()
+ .anyMatch(ctx -> ctx.isSupportedToBuildEffective() && ((StmtContext) ctx).producesEffective(type));