package org.opendaylight.yangtools.yang.parser.rfc7950.repo;
import static com.google.common.base.Preconditions.checkArgument;
+import static com.google.common.base.Verify.verifyNotNull;
import static java.util.Objects.requireNonNull;
import com.google.common.annotations.Beta;
import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
import org.opendaylight.yangtools.yang.parser.antlr.YangStatementLexer;
import org.opendaylight.yangtools.yang.parser.antlr.YangStatementParser;
+import org.opendaylight.yangtools.yang.parser.antlr.YangStatementParser.FileContext;
+import org.opendaylight.yangtools.yang.parser.antlr.YangStatementParser.KeywordContext;
import org.opendaylight.yangtools.yang.parser.antlr.YangStatementParser.StatementContext;
import org.opendaylight.yangtools.yang.parser.spi.source.PrefixToModule;
import org.opendaylight.yangtools.yang.parser.spi.source.QNameToStatementDefinition;
final PrefixToModule prefixes, final YangVersion yangVersion) {
new StatementContextVisitor(sourceName, writer, stmtDef, prefixes, yangVersion) {
@Override
- QName getValidStatementDefinition(final String keywordText, final StatementSourceReference ref) {
- return SourceException.throwIfNull(super.getValidStatementDefinition(keywordText, ref), ref,
- "%s is not a YANG statement or use of extension.", keywordText);
+ QName getValidStatementDefinition(final KeywordContext keyword, final StatementSourceReference ref) {
+ final QName ret = super.getValidStatementDefinition(keyword, ref);
+ if (ret == null) {
+ throw new SourceException(ref, "%s is not a YANG statement or use of extension.",
+ keyword.getText());
+ }
+ return ret;
}
}.visit(context);
}
lexer.addErrorListener(errorListener);
parser.addErrorListener(errorListener);
- final StatementContext result = parser.statement();
+ final FileContext result = parser.file();
errorListener.validate();
// Walk the resulting tree and replace each children with an immutable list, lowering memory requirements
// org.antlr.v4.runtime.Parser.TrimToSizeListener, but that does not make the tree immutable.
ParseTreeWalker.DEFAULT.walk(MAKE_IMMUTABLE_LISTENER, result);
- return result;
+ return verifyNotNull(result.statement());
}
}