corenova / yang-js

YANG parser and composer
Apache License 2.0
56 stars 18 forks source link

Infinite loop when import ietf-alarms.yang #103

Closed jcourington closed 5 years ago

jcourington commented 5 years ago

When I try to import the ietf-alarms.yang model the parser goes into an infinite loop. This is a yang 1.1 model

https://datatracker.ietf.org/doc/draft-ietf-ccamp-alarm-module/ https://tools.ietf.org/html/draft-ietf-ccamp-alarm-module-09

var util = require('util');
var fs = require('fs');
var yang = require('yang-js');

yang.import('ietf-alarms.yang');
Vafa-Andalibi commented 5 years ago

Have you imported ietf-yang-types? from what I see, alarm is importing that and yang-js is saying:

The pre-load approach is iterative in that you would need to ensure dependency YANG modules are loaded in the proper order of the nested dependency chain.

Vafa-Andalibi commented 5 years ago

Any update on this @jcourington? I can reproduce this using basically any Yang file that is importing dependencies. An example would be ietf-packet-fields which is importing ietf-inet-types, ietf-yang-types and ietf-ethertypes.

I tried to import the ietf-packet-fields both using Yang.import and require method and both will result in an infinite loop:

Yang.import("ietf-packet-fields");
Thrown:
RangeError: Maximum call stack size exceeded
    at Function.Yang.import (/Users/XXXX/gitrepos/yang-js/test/nodetest/node_modules/yang-js/lib/node.js:97:17)
    at Function.Yang.import (/Users/XXXX/gitrepos/yang-js/test/nodetest/node_modules/yang-js/lib/node.js:104:34)
    at Function.Yang.import (/Users/XXXX/gitrepos/yang-js/test/nodetest/node_modules/yang-js/lib/node.js:116:29)
    at Function.Yang.import (/Users/XXXX/gitrepos/yang-js/test/nodetest/node_modules/yang-js/lib/node.js:116:29)
    at Function.Yang.import (/Users/XXXX/gitrepos/yang-js/test/nodetest/node_modules/yang-js/lib/node.js:116:29)
    at Function.Yang.import (/Users/XXXX/gitrepos/yang-js/test/nodetest/node_modules/yang-js/lib/node.js:116:29)
    at Function.Yang.import (/Users/XXXX/gitrepos/yang-js/test/nodetest/node_modules/yang-js/lib/node.js:116:29)
    at Function.Yang.import (/Users/XXXX/gitrepos/yang-js/test/nodetest/node_modules/yang-js/lib/node.js:116:29)
    at Function.Yang.import (/Users/XXXX/gitrepos/yang-js/test/nodetest/node_modules/yang-js/lib/node.js:116:29)
    at Function.Yang.import (/Users/XXXX/gitrepos/yang-js/test/nodetest/node_modules/yang-js/lib/node.js:116:29)

Edit: I'm testing this on MacOS Mojave btw

sekur commented 5 years ago

@Vafa-Andalibi - can you try to enable yang debug and share some of the final tidbits causing the inifinite loop?

$ DEBUG=yang* node
> const Yang = require('yang-js');
> Yang.import("ietf-packet-fields");

Thanks.

Vafa-Andalibi commented 5 years ago

Here's a output including two "batch" of error lines:

yang:schema [resolve] ietf-packet-fields in /Users/XXXX/gitrepos/yang-js/test/nodetest/package.json +1m
  yang:schema [resolve] ietf-packet-fields in /Users/XXXX/gitrepos/yang-js/test/package.json +1ms
  yang:schema [resolve] ietf-packet-fields in /Users/XXXX/gitrepos/yang-js/package.json +1ms
  yang:schema [resolve] ietf-packet-fields in /Users/XXXX/gitrepos/package.json +1ms
  yang:schema [resolve] ietf-packet-fields in /Users/XXXX/package.json +0ms
  yang:schema [resolve] ietf-packet-fields in /Users/package.json +0ms
  yang:schema [resolve] checking if /Users/XXXX/gitrepos/yang-js/test/nodetest/ietf-packet-fields.yang exists +1ms
  yang:schema [import(ietf-inet-types)] { prefix: '1', 'revision-date': '0..1' } +29ms
  yang:node ExpressionError: [import(ietf-inet-types)] scope violation - invalid 'reference' extension found
  yang:node     at Function.Element.error (/Users/XXXX/gitrepos/yang-js/test/nodetest/node_modules/yang-js/lib/element.js:60:15)
  yang:node     at Function.Expression.error (/Users/XXXX/gitrepos/yang-js/test/nodetest/node_modules/yang-js/lib/expression.js:191:40)
  yang:node     at Function.Element.merge (/Users/XXXX/gitrepos/yang-js/test/nodetest/node_modules/yang-js/lib/element.js:308:22)
  yang:node     at Function.Yang.merge (/Users/XXXX/gitrepos/yang-js/test/nodetest/node_modules/yang-js/lib/yang.js:352:39)
  yang:node     at /Users/XXXX/gitrepos/yang-js/test/nodetest/node_modules/yang-js/lib/element.js:244:24
  yang:node     at Array.forEach (<anonymous>)
  yang:node     at Function.Element.extends (/Users/XXXX/gitrepos/yang-js/test/nodetest/node_modules/yang-js/lib/element.js:242:13)
  yang:node     at Function.Yang.parse (/Users/XXXX/gitrepos/yang-js/test/nodetest/node_modules/yang-js/lib/yang.js:76:48)
  yang:node     at /Users/XXXX/gitrepos/yang-js/test/nodetest/node_modules/yang-js/lib/yang.js:78:24
  yang:node     at Array.map (<anonymous>) +1m
  yang:schema [resolve] ietf-inet-types in /Users/XXXX/gitrepos/yang-js/test/nodetest/package.json +0ms
  yang:schema [resolve] ietf-inet-types in /Users/XXXX/gitrepos/yang-js/test/package.json +1ms
  yang:schema [resolve] ietf-inet-types in /Users/XXXX/gitrepos/yang-js/package.json +0ms
  yang:schema [resolve] ietf-inet-types check ./schema/ietf-inet-types.yang in /Users/XXXX/gitrepos/yang-js +0ms
  yang:schema [resolve] checking if /Users/XXXX/gitrepos/yang-js/schema/ietf-inet-types.yang exists +0ms
  yang:schema [module(ietf-inet-types)] [compile] enter... (undefined) +19ms
  yang:schema [module(ietf-inet-types)] has sub-expressions: namespace,prefix,organization,contact,description,revision,revision,typedef,typedef,typedef,typedef,typedef,typedef,typedef,typedef,typedef,typedef,typedef,typedef,typedef,typedef,typedef,typedef,typedef +0ms
  yang:schema [module(ietf-inet-types)/namespace(urn:ietf:params:xml:ns:yang:ietf-inet-types)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/namespace(urn:ietf:params:xml:ns:yang:ietf-inet-types)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/prefix] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/prefix] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/organization] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/organization] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/contact] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/contact] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/description] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/description] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/revision(2013-07-15)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/revision(2013-07-15)] has sub-expressions: description,reference +1ms
  yang:schema [module(ietf-inet-types)/revision(2013-07-15)/description] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/revision(2013-07-15)/description] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/revision(2013-07-15)/reference] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/revision(2013-07-15)/reference] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/revision(2013-07-15)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/revision(2010-09-24)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/revision(2010-09-24)] has sub-expressions: description,reference +0ms
  yang:schema [module(ietf-inet-types)/revision(2010-09-24)/description] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/revision(2010-09-24)/description] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/revision(2010-09-24)/reference] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/revision(2010-09-24)/reference] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/revision(2010-09-24)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)] [compile] enter... (undefined) +4ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)] has sub-expressions: enum,enum,enum +1ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)/enum(unknown)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)/enum(unknown)] has sub-expressions: value,description +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)/enum(unknown)/value] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)/enum(unknown)/value] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)/enum(unknown)/description] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)/enum(unknown)/description] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)/enum(unknown)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)/enum(ipv4)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)/enum(ipv4)] has sub-expressions: value,description +1ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)/enum(ipv4)/value] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)/enum(ipv4)/value] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)/enum(ipv4)/description] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)/enum(ipv4)/description] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)/enum(ipv4)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)/enum(ipv6)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)/enum(ipv6)] has sub-expressions: value,description +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)/enum(ipv6)/value] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)/enum(ipv6)/value] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)/enum(ipv6)/description] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)/enum(ipv6)/description] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)/enum(ipv6)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)] has sub-expressions: type,description,reference +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)] has sub-expressions: enum,enum,enum +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)/enum(unknown)] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)/enum(unknown)] has sub-expressions: value,description +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)/enum(unknown)/value] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)/enum(unknown)/value] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)/enum(unknown)/description] [compile] enter... (true) +1ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)/enum(unknown)/description] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)/enum(unknown)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)/enum(ipv4)] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)/enum(ipv4)] has sub-expressions: value,description +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)/enum(ipv4)/value] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)/enum(ipv4)/value] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)/enum(ipv4)/description] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)/enum(ipv4)/description] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)/enum(ipv4)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)/enum(ipv6)] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)/enum(ipv6)] has sub-expressions: value,description +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)/enum(ipv6)/value] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)/enum(ipv6)/value] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)/enum(ipv6)/description] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)/enum(ipv6)/description] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)/enum(ipv6)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/type(enumeration)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/description] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/description] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/reference] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)/reference] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-version)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(dscp)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(dscp)/type(uint8)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(dscp)/type(uint8)] has sub-expressions: range +1ms
  yang:schema [module(ietf-inet-types)/typedef(dscp)/type(uint8)/range] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(dscp)/type(uint8)/range] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(dscp)/type(uint8)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(dscp)] has sub-expressions: type,description,reference +0ms
  yang:schema [module(ietf-inet-types)/typedef(dscp)/type(uint8)] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(dscp)/type(uint8)] has sub-expressions: range +0ms
  yang:schema [module(ietf-inet-types)/typedef(dscp)/type(uint8)/range] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(dscp)/type(uint8)/range] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(dscp)/type(uint8)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(dscp)/description] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(dscp)/description] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(dscp)/reference] [compile] enter... (undefined) +1ms
  yang:schema [module(ietf-inet-types)/typedef(dscp)/reference] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(dscp)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-flow-label)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-flow-label)/type(uint32)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-flow-label)/type(uint32)] has sub-expressions: range +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-flow-label)/type(uint32)/range] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-flow-label)/type(uint32)/range] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-flow-label)/type(uint32)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-flow-label)] has sub-expressions: type,description,reference +1ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-flow-label)/type(uint32)] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-flow-label)/type(uint32)] has sub-expressions: range +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-flow-label)/type(uint32)/range] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-flow-label)/type(uint32)/range] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-flow-label)/type(uint32)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-flow-label)/description] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-flow-label)/description] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-flow-label)/reference] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-flow-label)/reference] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-flow-label)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(port-number)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(port-number)/type(uint16)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(port-number)/type(uint16)] has sub-expressions: range +0ms
  yang:schema [module(ietf-inet-types)/typedef(port-number)/type(uint16)/range] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(port-number)/type(uint16)/range] [compile] done +1ms
  yang:schema [module(ietf-inet-types)/typedef(port-number)/type(uint16)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(port-number)] has sub-expressions: type,description,reference +0ms
  yang:schema [module(ietf-inet-types)/typedef(port-number)/type(uint16)] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(port-number)/type(uint16)] has sub-expressions: range +0ms
  yang:schema [module(ietf-inet-types)/typedef(port-number)/type(uint16)/range] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(port-number)/type(uint16)/range] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(port-number)/type(uint16)] [compile] done +1ms
  yang:schema [module(ietf-inet-types)/typedef(port-number)/description] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(port-number)/description] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(port-number)/reference] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(port-number)/reference] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(port-number)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(as-number)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(as-number)/type(uint32)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(as-number)/type(uint32)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(as-number)] has sub-expressions: type,description,reference +0ms
  yang:schema [module(ietf-inet-types)/typedef(as-number)/type(uint32)] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(as-number)/type(uint32)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(as-number)/description] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(as-number)/description] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(as-number)/reference] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(as-number)/reference] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(as-number)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address)] [compile] enter... (undefined) +1ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address)/type(union)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address)/type(union)] has sub-expressions: type,type +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address)/type(union)/type(inet:ipv4-address)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address)/type(union)/type(inet:ipv4-address)] [match] with typedef inet:ipv4-address +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address)/type(union)/type(inet:ipv4-address)] [match] check if current module's prefix +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address)/type(string)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address)/type(string)] has sub-expressions: pattern +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address)/type(string)/pattern] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address)/type(string)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address)/type(string)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address)] has sub-expressions: type,description +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address)/type(string)] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address)/type(string)] has sub-expressions: pattern +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address)/type(string)/pattern] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address)/type(string)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address)/type(string)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address)/description] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address)/description] [compile] done +1ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address)/type(union)/type(inet:ipv4-address)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address)/type(union)/type(inet:ipv6-address)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address)/type(union)/type(inet:ipv6-address)] [match] with typedef inet:ipv6-address +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address)/type(union)/type(inet:ipv6-address)] [match] check if current module's prefix +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address)/type(string)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address)/type(string)] has sub-expressions: pattern,pattern +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address)/type(string)/pattern] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address)/type(string)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address)/type(string)/pattern] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address)/type(string)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address)/type(string)] [compile] done +1ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address)] has sub-expressions: type,description,reference +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address)/type(string)] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address)/type(string)] has sub-expressions: pattern,pattern +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address)/type(string)/pattern] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address)/type(string)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address)/type(string)/pattern] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address)/type(string)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address)/type(string)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address)/description] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address)/description] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address)/reference] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address)/reference] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address)/type(union)/type(inet:ipv6-address)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address)/type(union)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address)] has sub-expressions: type,description,reference +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address)/type(union)] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address)/type(union)] has sub-expressions: type,type +1ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address)/type(union)/type(inet:ipv4-address)] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address)/type(union)/type(inet:ipv4-address)] has sub-expressions: pattern +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address)/type(union)/type(inet:ipv4-address)/pattern] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address)/type(union)/type(inet:ipv4-address)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address)/type(union)/type(inet:ipv4-address)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address)/type(union)/type(inet:ipv6-address)] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address)/type(union)/type(inet:ipv6-address)] has sub-expressions: pattern,pattern +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address)/type(union)/type(inet:ipv6-address)/pattern] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address)/type(union)/type(inet:ipv6-address)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address)/type(union)/type(inet:ipv6-address)/pattern] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address)/type(union)/type(inet:ipv6-address)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address)/type(union)/type(inet:ipv6-address)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address)/type(union)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address)/description] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address)/description] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address)/reference] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address)/reference] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address)] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address)] has sub-expressions: type,description +1ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address)/type(string)] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address)/type(string)] has sub-expressions: pattern +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address)/type(union)/type(inet:ipv4-address)/pattern] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address)/type(union)/type(inet:ipv4-address)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address)/type(string)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address)/description] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address)/description] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address)] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address)] has sub-expressions: type,description,reference +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address)/type(string)] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address)/type(string)] has sub-expressions: pattern,pattern +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address)/type(union)/type(inet:ipv6-address)/pattern] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address)/type(union)/type(inet:ipv6-address)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address)/type(union)/type(inet:ipv6-address)/pattern] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address)/type(union)/type(inet:ipv6-address)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address)/type(string)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address)/description] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address)/description] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address)/reference] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address)/reference] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)] has sub-expressions: type,type +1ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)/type(inet:ipv4-address-no-zone)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)/type(inet:ipv4-address-no-zone)] [match] with typedef inet:ipv4-address-no-zone +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)/type(inet:ipv4-address-no-zone)] [match] check if current module's prefix +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address-no-zone)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address-no-zone)/type(inet:ipv4-address)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address-no-zone)/type(inet:ipv4-address)] [match] with typedef inet:ipv4-address +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address-no-zone)/type(inet:ipv4-address)] [match] check if current module's prefix +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address-no-zone)/type(inet:ipv4-address)] has sub-expressions: pattern +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address-no-zone)/type(inet:ipv4-address)/pattern] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address-no-zone)/type(inet:ipv4-address)/pattern] [compile] done +1ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address-no-zone)/type(inet:ipv4-address)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address-no-zone)] has sub-expressions: type,description +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address-no-zone)/type(inet:ipv4-address)] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address-no-zone)/type(inet:ipv4-address)] has sub-expressions: pattern,pattern +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address-no-zone)/type(inet:ipv4-address)/pattern] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address-no-zone)/type(inet:ipv4-address)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address-no-zone)/type(inet:ipv4-address)/pattern] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address-no-zone)/type(inet:ipv4-address)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address-no-zone)/type(inet:ipv4-address)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address-no-zone)/description] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address-no-zone)/description] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address-no-zone)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)/type(inet:ipv4-address-no-zone)] [compile] done +1ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)/type(inet:ipv6-address-no-zone)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)/type(inet:ipv6-address-no-zone)] [match] with typedef inet:ipv6-address-no-zone +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)/type(inet:ipv6-address-no-zone)] [match] check if current module's prefix +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address-no-zone)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address-no-zone)/type(inet:ipv6-address)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address-no-zone)/type(inet:ipv6-address)] [match] with typedef inet:ipv6-address +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address-no-zone)/type(inet:ipv6-address)] [match] check if current module's prefix +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address-no-zone)/type(inet:ipv6-address)] has sub-expressions: pattern +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address-no-zone)/type(inet:ipv6-address)/pattern] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address-no-zone)/type(inet:ipv6-address)/pattern] [compile] done +1ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address-no-zone)/type(inet:ipv6-address)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address-no-zone)] has sub-expressions: type,description,reference +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address-no-zone)/type(inet:ipv6-address)] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address-no-zone)/type(inet:ipv6-address)] has sub-expressions: pattern,pattern,pattern +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address-no-zone)/type(inet:ipv6-address)/pattern] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address-no-zone)/type(inet:ipv6-address)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address-no-zone)/type(inet:ipv6-address)/pattern] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address-no-zone)/type(inet:ipv6-address)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address-no-zone)/type(inet:ipv6-address)/pattern] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address-no-zone)/type(inet:ipv6-address)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address-no-zone)/type(inet:ipv6-address)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address-no-zone)/description] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address-no-zone)/description] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address-no-zone)/reference] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address-no-zone)/reference] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address-no-zone)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)/type(inet:ipv6-address-no-zone)] [compile] done +1ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)] has sub-expressions: type,description,reference +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)] has sub-expressions: type,type +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)/type(inet:ipv4-address-no-zone)] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)/type(inet:ipv4-address-no-zone)] has sub-expressions: pattern,pattern +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)/type(inet:ipv4-address-no-zone)/pattern] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)/type(inet:ipv4-address-no-zone)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)/type(inet:ipv4-address-no-zone)/pattern] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)/type(inet:ipv4-address-no-zone)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)/type(inet:ipv4-address-no-zone)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)/type(inet:ipv6-address-no-zone)] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)/type(inet:ipv6-address-no-zone)] has sub-expressions: pattern,pattern,pattern +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)/type(inet:ipv6-address-no-zone)/pattern] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)/type(inet:ipv6-address-no-zone)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)/type(inet:ipv6-address-no-zone)/pattern] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)/type(inet:ipv6-address-no-zone)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)/type(inet:ipv6-address-no-zone)/pattern] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)/type(inet:ipv6-address-no-zone)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)/type(inet:ipv6-address-no-zone)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/description] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/description] [compile] done +1ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/reference] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/reference] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address-no-zone)] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address-no-zone)] has sub-expressions: type,description +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address-no-zone)/type(inet:ipv4-address)] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address-no-zone)/type(inet:ipv4-address)] has sub-expressions: pattern,pattern +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)/type(inet:ipv4-address-no-zone)/pattern] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)/type(inet:ipv4-address-no-zone)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)/type(inet:ipv4-address-no-zone)/pattern] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)/type(inet:ipv4-address-no-zone)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address-no-zone)/type(inet:ipv4-address)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address-no-zone)/description] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address-no-zone)/description] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-address-no-zone)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address-no-zone)] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address-no-zone)] has sub-expressions: type,description,reference +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address-no-zone)/type(inet:ipv6-address)] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address-no-zone)/type(inet:ipv6-address)] has sub-expressions: pattern,pattern,pattern +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)/type(inet:ipv6-address-no-zone)/pattern] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)/type(inet:ipv6-address-no-zone)/pattern] [compile] done +1ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)/type(inet:ipv6-address-no-zone)/pattern] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)/type(inet:ipv6-address-no-zone)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)/type(inet:ipv6-address-no-zone)/pattern] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)/type(inet:ipv6-address-no-zone)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address-no-zone)/type(inet:ipv6-address)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address-no-zone)/description] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address-no-zone)/description] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address-no-zone)/reference] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address-no-zone)/reference] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-address-no-zone)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-prefix)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-prefix)/type(union)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-prefix)/type(union)] has sub-expressions: type,type +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-prefix)/type(union)/type(inet:ipv4-prefix)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-prefix)/type(union)/type(inet:ipv4-prefix)] [match] with typedef inet:ipv4-prefix +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-prefix)/type(union)/type(inet:ipv4-prefix)] [match] check if current module's prefix +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-prefix)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-prefix)/type(string)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-prefix)/type(string)] has sub-expressions: pattern +1ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-prefix)/type(string)/pattern] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-prefix)/type(string)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-prefix)/type(string)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-prefix)] has sub-expressions: type,description +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-prefix)/type(string)] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-prefix)/type(string)] has sub-expressions: pattern +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-prefix)/type(string)/pattern] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-prefix)/type(string)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-prefix)/type(string)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-prefix)/description] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-prefix)/description] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-prefix)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-prefix)/type(union)/type(inet:ipv4-prefix)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-prefix)/type(union)/type(inet:ipv6-prefix)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-prefix)/type(union)/type(inet:ipv6-prefix)] [match] with typedef inet:ipv6-prefix +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-prefix)/type(union)/type(inet:ipv6-prefix)] [match] check if current module's prefix +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-prefix)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-prefix)/type(string)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-prefix)/type(string)] has sub-expressions: pattern,pattern +1ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-prefix)/type(string)/pattern] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-prefix)/type(string)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-prefix)/type(string)/pattern] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-prefix)/type(string)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-prefix)/type(string)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-prefix)] has sub-expressions: type,description,reference +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-prefix)/type(string)] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-prefix)/type(string)] has sub-expressions: pattern,pattern +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-prefix)/type(string)/pattern] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-prefix)/type(string)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-prefix)/type(string)/pattern] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-prefix)/type(string)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-prefix)/type(string)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-prefix)/description] [compile] enter... (undefined) +1ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-prefix)/description] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-prefix)/reference] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-prefix)/reference] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-prefix)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-prefix)/type(union)/type(inet:ipv6-prefix)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-prefix)/type(union)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-prefix)] has sub-expressions: type,description +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-prefix)/type(union)] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-prefix)/type(union)] has sub-expressions: type,type +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-prefix)/type(union)/type(inet:ipv4-prefix)] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-prefix)/type(union)/type(inet:ipv4-prefix)] has sub-expressions: pattern +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-prefix)/type(union)/type(inet:ipv4-prefix)/pattern] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-prefix)/type(union)/type(inet:ipv4-prefix)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-prefix)/type(union)/type(inet:ipv4-prefix)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-prefix)/type(union)/type(inet:ipv6-prefix)] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-prefix)/type(union)/type(inet:ipv6-prefix)] has sub-expressions: pattern,pattern +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-prefix)/type(union)/type(inet:ipv6-prefix)/pattern] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-prefix)/type(union)/type(inet:ipv6-prefix)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-prefix)/type(union)/type(inet:ipv6-prefix)/pattern] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-prefix)/type(union)/type(inet:ipv6-prefix)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-prefix)/type(union)/type(inet:ipv6-prefix)] [compile] done +1ms
  yang:schema [module(ietf-inet-types)/typedef(ip-prefix)/type(union)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-prefix)/description] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-prefix)/description] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-prefix)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-prefix)] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-prefix)] has sub-expressions: type,description +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-prefix)/type(string)] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-prefix)/type(string)] has sub-expressions: pattern +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-prefix)/type(union)/type(inet:ipv4-prefix)/pattern] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-prefix)/type(union)/type(inet:ipv4-prefix)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-prefix)/type(string)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-prefix)/description] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-prefix)/description] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv4-prefix)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-prefix)] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-prefix)] has sub-expressions: type,description,reference +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-prefix)/type(string)] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-prefix)/type(string)] has sub-expressions: pattern,pattern +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-prefix)/type(union)/type(inet:ipv6-prefix)/pattern] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-prefix)/type(union)/type(inet:ipv6-prefix)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-prefix)/type(union)/type(inet:ipv6-prefix)/pattern] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-prefix)/type(union)/type(inet:ipv6-prefix)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-prefix)/type(string)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-prefix)/description] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-prefix)/description] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-prefix)/reference] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-prefix)/reference] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ipv6-prefix)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(domain-name)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(domain-name)/type(string)] [compile] enter... (undefined) +1ms
  yang:schema [module(ietf-inet-types)/typedef(domain-name)/type(string)] has sub-expressions: pattern,length +0ms
  yang:schema [module(ietf-inet-types)/typedef(domain-name)/type(string)/pattern] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(domain-name)/type(string)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(domain-name)/type(string)/length] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(domain-name)/type(string)/length] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(domain-name)/type(string)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(domain-name)] has sub-expressions: type,description,reference +0ms
  yang:schema [module(ietf-inet-types)/typedef(domain-name)/type(string)] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(domain-name)/type(string)] has sub-expressions: pattern,length +0ms
  yang:schema [module(ietf-inet-types)/typedef(domain-name)/type(string)/pattern] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(domain-name)/type(string)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(domain-name)/type(string)/length] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(domain-name)/type(string)/length] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(domain-name)/type(string)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(domain-name)/description] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(domain-name)/description] [compile] done +1ms
  yang:schema [module(ietf-inet-types)/typedef(domain-name)/reference] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(domain-name)/reference] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(domain-name)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(host)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(host)/type(union)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(host)/type(union)] has sub-expressions: type,type +0ms
  yang:schema [module(ietf-inet-types)/typedef(host)/type(union)/type(inet:ip-address)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(host)/type(union)/type(inet:ip-address)] [match] with typedef inet:ip-address +0ms
  yang:schema [module(ietf-inet-types)/typedef(host)/type(union)/type(inet:ip-address)] [match] check if current module's prefix +0ms
  yang:schema [module(ietf-inet-types)/typedef(host)/type(union)/type(inet:ip-address)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(host)/type(union)/type(inet:domain-name)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(host)/type(union)/type(inet:domain-name)] [match] with typedef inet:domain-name +1ms
  yang:schema [module(ietf-inet-types)/typedef(host)/type(union)/type(inet:domain-name)] [match] check if current module's prefix +0ms
  yang:schema [module(ietf-inet-types)/typedef(host)/type(union)/type(inet:domain-name)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(host)/type(union)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(host)] has sub-expressions: type,description +0ms
  yang:schema [module(ietf-inet-types)/typedef(host)/type(union)] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(host)/type(union)] has sub-expressions: type,type +0ms
  yang:schema [module(ietf-inet-types)/typedef(host)/type(union)/type(inet:ip-address)] [compile] enter... (true) +5ms
  yang:schema [module(ietf-inet-types)/typedef(host)/type(union)/type(inet:ip-address)] has sub-expressions: type,type +0ms
  yang:schema [module(ietf-inet-types)/typedef(host)/type(union)/type(inet:ip-address)/type(inet:ipv4-address)] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(host)/type(union)/type(inet:ip-address)/type(inet:ipv4-address)] has sub-expressions: pattern +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)/type(inet:ipv4-address-no-zone)/pattern] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)/type(inet:ipv4-address-no-zone)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(host)/type(union)/type(inet:ip-address)/type(inet:ipv4-address)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(host)/type(union)/type(inet:ip-address)/type(inet:ipv6-address)] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(host)/type(union)/type(inet:ip-address)/type(inet:ipv6-address)] has sub-expressions: pattern,pattern +1ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)/type(inet:ipv6-address-no-zone)/pattern] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)/type(inet:ipv6-address-no-zone)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)/type(inet:ipv6-address-no-zone)/pattern] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(ip-address-no-zone)/type(union)/type(inet:ipv6-address-no-zone)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(host)/type(union)/type(inet:ip-address)/type(inet:ipv6-address)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(host)/type(union)/type(inet:ip-address)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(host)/type(union)/type(inet:domain-name)] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(host)/type(union)/type(inet:domain-name)] has sub-expressions: pattern,length +0ms
  yang:schema [module(ietf-inet-types)/typedef(host)/type(union)/type(inet:domain-name)/pattern] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(host)/type(union)/type(inet:domain-name)/pattern] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(host)/type(union)/type(inet:domain-name)/length] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(host)/type(union)/type(inet:domain-name)/length] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(host)/type(union)/type(inet:domain-name)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(host)/type(union)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(host)/description] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(host)/description] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(host)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(uri)] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(uri)/type(string)] [compile] enter... (undefined) +1ms
  yang:schema [module(ietf-inet-types)/typedef(uri)/type(string)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(uri)] has sub-expressions: type,description,reference +0ms
  yang:schema [module(ietf-inet-types)/typedef(uri)/type(string)] [compile] enter... (true) +0ms
  yang:schema [module(ietf-inet-types)/typedef(uri)/type(string)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(uri)/description] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(uri)/description] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(uri)/reference] [compile] enter... (undefined) +0ms
  yang:schema [module(ietf-inet-types)/typedef(uri)/reference] [compile] done +0ms
  yang:schema [module(ietf-inet-types)/typedef(uri)] [compile] done +0ms
  yang:schema [module(ietf-inet-types)] [compile] done +0ms
  yang:element use: using previously loaded 'module:ietf-inet-types' +1m
  yang:node retrying import(/Users/XXXX/gitrepos/yang-js/test/nodetest/ietf-packet-fields.yang) +59ms
  yang:schema [import(ietf-inet-types)] { prefix: '1', 'revision-date': '0..1' } +12ms
  yang:node ExpressionError: [import(ietf-inet-types)] scope violation - invalid 'reference' extension found
  yang:node     at Function.Element.error (/Users/XXXX/gitrepos/yang-js/test/nodetest/node_modules/yang-js/lib/element.js:60:15)
  yang:node     at Function.Expression.error (/Users/XXXX/gitrepos/yang-js/test/nodetest/node_modules/yang-js/lib/expression.js:191:40)
  yang:node     at Function.Element.merge (/Users/XXXX/gitrepos/yang-js/test/nodetest/node_modules/yang-js/lib/element.js:308:22)
  yang:node     at Function.Yang.merge (/Users/XXXX/gitrepos/yang-js/test/nodetest/node_modules/yang-js/lib/yang.js:352:39)
  yang:node     at /Users/XXXX/gitrepos/yang-js/test/nodetest/node_modules/yang-js/lib/element.js:244:24
  yang:node     at Array.forEach (<anonymous>)
  yang:node     at Function.Element.extends (/Users/XXXX/gitrepos/yang-js/test/nodetest/node_modules/yang-js/lib/element.js:242:13)
  yang:node     at Function.Yang.parse (/Users/XXXX/gitrepos/yang-js/test/nodetest/node_modules/yang-js/lib/yang.js:76:48)
  yang:node     at /Users/XXXX/gitrepos/yang-js/test/nodetest/node_modules/yang-js/lib/yang.js:78:24
  yang:node     at Array.map (<anonymous>) +12ms
Vafa-Andalibi commented 5 years ago

Just the quick note that the dependencies can be imported separately successfully. i.e. something like the following will not raise an error as it's raising in the above log:

Yang.import("ietf-inet-types");
sekur commented 5 years ago

The issue appears to be related to YANG statement scope validation. Based on RFC-6020 (YANG 1.0), an import statement cannot contain a reference sub-statement. However, RFC-7950 (YANG 1.1) allows import statement to also contain description and reference sub-statements.

yang-js is not fully YANG 1.1 compliant so you can comment out the reference sub-statement in the YANG schema that is importing the dependency modules for now.

I'll add to yang-js parser to allow them in the next release.

sekur commented 5 years ago

I'll also need to fix the infinite loop issue during Yang.import when we encounter syntax error during include/import where dependency is found successfully.

Vafa-Andalibi commented 5 years ago

Thank you that fixed the infinite loop issue. I'm still getting some errors but I don't think it's the yang-js problem anymore. Is there any timeline for Yang v1.1 support?

Vafa-Andalibi commented 5 years ago

Actually I think the new issue can be yang-js related. I'm now getting this error:

Error [ExpressionError]: [module(ietf-packet-fields)/grouping(acl-ipv4-header-fields)/leaf(flags)/type(bits)] unable to resolve typedef for bits

So for some reason the bits basetype cannot be resolved. Any idea about this?

sekur commented 5 years ago

Yes, it's because yang-js currently doesn't support bits typedef... I'd welcome a patch to add that support. :-)

It needs to be added to src/lang/typedefs.coffee.

You can check current status of YANG 1.0 compliance report

sekur commented 5 years ago

Preliminary support for bits added as per #106.