From 3058142204c6ecb812929e4dfd215605ceb0b3f6 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Thu, 28 Jan 2021 21:44:33 +0100 Subject: [PATCH] YangStmtMapping.TYPE implies StatementPolicy.contextIndependent() InferredStatementContext has an explicit guard to get replicas of statements which are YangStmtMapping.TYPE. This amounts to those statements being context-independent. Express that fact in the policy. This exposes an issue with 'base' statements, which in fact can be considered for copying and are really context-indepenent, not uncopyable. JIRA: YANGTOOLS-1208 Change-Id: I49f0454ad11a029d217bd7fb70d23e315f37072c Signed-off-by: Robert Varga --- .../yang/parser/stmt/reactor/InferredStatementContext.java | 1 - .../yang/parser/rfc7950/stmt/base/BaseStatementSupport.java | 2 +- .../stmt/type/AbstractIdentityRefSpecificationSupport.java | 2 +- .../rfc7950/stmt/type/AbstractLeafrefSpecificationSupport.java | 2 +- .../parser/rfc7950/stmt/type/AbstractTypeStatementSupport.java | 3 +-- .../parser/rfc7950/stmt/type/BitsSpecificationSupport.java | 2 +- .../rfc7950/stmt/type/Decimal64SpecificationSupport.java | 2 +- .../parser/rfc7950/stmt/type/EnumSpecificationSupport.java | 2 +- .../stmt/type/InstanceIdentifierSpecificationSupport.java | 2 +- .../parser/rfc7950/stmt/type/UnionSpecificationSupport.java | 2 +- 10 files changed, 9 insertions(+), 11 deletions(-) diff --git a/yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/InferredStatementContext.java b/yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/InferredStatementContext.java index 2ef267c091..7f73fa0c72 100644 --- a/yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/InferredStatementContext.java +++ b/yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/InferredStatementContext.java @@ -520,7 +520,6 @@ final class InferredStatementContext, E extend // StatementSupport. // FIXME: YANGTOOLS-652: this map looks very much like UsesStatementSupport.TOP_REUSED_DEF_SET private static final ImmutableSet REUSED_DEF_SET = ImmutableSet.of( - YangStmtMapping.TYPE, YangStmtMapping.TYPEDEF, YangStmtMapping.USES); diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/base/BaseStatementSupport.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/base/BaseStatementSupport.java index ef9d4c992f..3cec5e02cc 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/base/BaseStatementSupport.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/base/BaseStatementSupport.java @@ -36,7 +36,7 @@ public final class BaseStatementSupport extends AbstractQNameStatementSupport> { AbstractIdentityRefSpecificationSupport() { - super(YangStmtMapping.TYPE, StatementPolicy.legacyDeclaredCopy()); + super(YangStmtMapping.TYPE, StatementPolicy.contextIndependent()); } @Override diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/AbstractLeafrefSpecificationSupport.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/AbstractLeafrefSpecificationSupport.java index 1a2c910644..896e9ad7cc 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/AbstractLeafrefSpecificationSupport.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/AbstractLeafrefSpecificationSupport.java @@ -25,7 +25,7 @@ import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; abstract class AbstractLeafrefSpecificationSupport extends AbstractStatementSupport> { AbstractLeafrefSpecificationSupport() { - super(YangStmtMapping.TYPE, StatementPolicy.legacyDeclaredCopy()); + super(YangStmtMapping.TYPE, StatementPolicy.contextIndependent()); } @Override diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/AbstractTypeStatementSupport.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/AbstractTypeStatementSupport.java index 7885d26c53..959b216785 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/AbstractTypeStatementSupport.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/AbstractTypeStatementSupport.java @@ -151,8 +151,7 @@ abstract class AbstractTypeStatementSupport .build(); AbstractTypeStatementSupport() { - // FIXME: can a type statement be copied? - super(YangStmtMapping.TYPE, StatementPolicy.legacyDeclaredCopy()); + super(YangStmtMapping.TYPE, StatementPolicy.contextIndependent()); } @Override diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/BitsSpecificationSupport.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/BitsSpecificationSupport.java index 1c69abff5a..6b3a250f79 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/BitsSpecificationSupport.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/BitsSpecificationSupport.java @@ -33,7 +33,7 @@ final class BitsSpecificationSupport .build(); BitsSpecificationSupport() { - super(YangStmtMapping.TYPE, StatementPolicy.legacyDeclaredCopy()); + super(YangStmtMapping.TYPE, StatementPolicy.contextIndependent()); } @Override diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/Decimal64SpecificationSupport.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/Decimal64SpecificationSupport.java index 6075243965..da5868973f 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/Decimal64SpecificationSupport.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/Decimal64SpecificationSupport.java @@ -32,7 +32,7 @@ final class Decimal64SpecificationSupport extends AbstractStatementSupport