- if (Utils.isValidStatementDefinition(prefixToModuleMap, qNameToStmtDefMap, name)) {
- def = new StatementDefinitionContext<>(new UnknownStatementImpl.Definition(qNameToStmtDefMap.get(Utils.trimPrefix(name))));
+ //unknown-stmts (from import, include or local-scope)
+ if (qNameToStmtDefMap.get(Utils.trimPrefix(name)) != null) {
+ QName key = Utils.qNameFromArgument(current, name.getLocalName());
+ if (key != null) {
+ final StatementContextBase<?,?,?> extension = (StatementContextBase<?, ?, ?>) currentContext
+ .getAllFromNamespace(ExtensionNamespace.class).get(key);
+ if (extension != null) {
+ final QName qName = QName.create(((QName) ((SubstatementContext) extension).getStatementArgument())
+ .getModule().getNamespace(), ((QName) ((SubstatementContext) extension).
+ getStatementArgument()).getModule().getRevision(), extension.getIdentifier().getArgument());
+
+ def = new StatementDefinitionContext<>(new UnknownStatementImpl.Definition
+ (getNewStatementDefinition(qName)));
+ } else {
+ throw new IllegalArgumentException("Not found unknown statement: " + name);
+ }
+ }
+ } else {
+ //type-body-stmts
+ def = resolveTypeBodyStmts(name.getLocalName());