summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuergen Bocklage-Ryannel <juergen.bocklage-ryannel@pelagicore.com>2017-03-28 18:53:37 +0200
committerJuergen Bocklage-Ryannel <juergen.bocklage-ryannel@pelagicore.com>2017-03-28 18:53:37 +0200
commit197be91e87573d7e945d2a2a16414cb3b7d9e3e2 (patch)
tree8435c842ff49d55125c11dac31da152791b13056
parentd6b3141a2890a29d809a7b2195b395bd90fb4483 (diff)
downloadqtivi-qface-197be91e87573d7e945d2a2a16414cb3b7d9e3e2.tar.gz
Fixed some issues with annotations. Several attributes should work now and also the correct merging from YAML annotations with IDL annotations
-rw-r--r--qface/generator.py3
-rw-r--r--qface/idl/domain.py4
-rw-r--r--qface/idl/parser/T.g42
-rw-r--r--qface/idl/parser/TParser.py408
-rw-r--r--tests/in/com.pelagicore.ivi.tuner.qface2
-rw-r--r--tests/in/com.pelagicore.ivi.tuner.yaml6
-rw-r--r--tests/test_tags.py5
7 files changed, 225 insertions, 205 deletions
diff --git a/qface/generator.py b/qface/generator.py
index 6972b6d..364a44c 100644
--- a/qface/generator.py
+++ b/qface/generator.py
@@ -14,6 +14,7 @@ from .idl.parser.TParser import TParser
from .idl.parser.TListener import TListener
from .idl.domain import System
from .idl.listener import DomainListener
+from .utils import merge
import click
@@ -139,7 +140,7 @@ class FileSystem(object):
for identifier, data in meta.items():
symbol = system.lookup(identifier)
if symbol:
- symbol.tags.update(data)
+ merge(symbol.tags, data)
@staticmethod
def parse(input, identifier: str = None, use_cache=False, clear_cache=True, pattern="*.qface"):
diff --git a/qface/idl/domain.py b/qface/idl/domain.py
index 9fc553b..86cdfa9 100644
--- a/qface/idl/domain.py
+++ b/qface/idl/domain.py
@@ -126,7 +126,7 @@ class Symbol(NamedElement):
def add_tag(self, tag):
if tag not in self._tags:
- self._tags[tag] = OrderedDict()
+ self._tags[tag] = dict()
def add_attribute(self, tag, name, value):
self.add_tag(tag)
@@ -137,7 +137,7 @@ class Symbol(NamedElement):
return self._tags[name]
def attribute(self, tag, name):
- if tag in self._tags:
+ if tag in self._tags and name in self._tags[tag]:
return self._tags[tag][name]
@property
diff --git a/qface/idl/parser/T.g4 b/qface/idl/parser/T.g4
index 3782c91..df8560e 100644
--- a/qface/idl/parser/T.g4
+++ b/qface/idl/parser/T.g4
@@ -60,7 +60,7 @@ tagSymbol
;
tagAttributeSymbol
- : name=IDENTIFIER ('=' value=IDENTIFIER)?
+ : name=IDENTIFIER ('=' value=IDENTIFIER)? ','?
;
typeSymbol
diff --git a/qface/idl/parser/TParser.py b/qface/idl/parser/TParser.py
index d43a416..f51bfd7 100644
--- a/qface/idl/parser/TParser.py
+++ b/qface/idl/parser/TParser.py
@@ -6,7 +6,7 @@ from io import StringIO
def serializedATN():
with StringIO() as buf:
buf.write("\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\3$")
- buf.write("\u0136\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7")
+ buf.write("\u0139\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7")
buf.write("\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r\4\16")
buf.write("\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22\4\23\t\23")
buf.write("\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31")
@@ -24,131 +24,133 @@ def serializedATN():
buf.write("\u00a9\n\13\f\13\16\13\u00ac\13\13\3\13\5\13\u00af\n\13")
buf.write("\3\13\3\13\3\13\5\13\u00b4\n\13\3\f\3\f\3\f\5\f\u00b9")
buf.write("\n\f\3\r\3\r\3\r\7\r\u00be\n\r\f\r\16\r\u00c1\13\r\3\r")
- buf.write("\3\r\3\16\3\16\3\16\5\16\u00c8\n\16\3\17\3\17\3\17\3\17")
- buf.write("\5\17\u00ce\n\17\3\20\3\20\3\21\3\21\3\21\3\21\3\21\5")
- buf.write("\21\u00d7\n\21\3\22\3\22\3\22\3\22\3\22\3\23\3\23\3\23")
- buf.write("\3\23\3\23\3\24\5\24\u00e4\n\24\3\24\7\24\u00e7\n\24\f")
- buf.write("\24\16\24\u00ea\13\24\3\24\3\24\3\24\3\24\7\24\u00f0\n")
- buf.write("\24\f\24\16\24\u00f3\13\24\3\24\3\24\5\24\u00f7\n\24\3")
- buf.write("\25\5\25\u00fa\n\25\3\25\7\25\u00fd\n\25\f\25\16\25\u0100")
- buf.write("\13\25\3\25\3\25\3\25\5\25\u0105\n\25\3\26\5\26\u0108")
- buf.write("\n\26\3\26\7\26\u010b\n\26\f\26\16\26\u010e\13\26\3\26")
- buf.write("\3\26\3\26\3\26\7\26\u0114\n\26\f\26\16\26\u0117\13\26")
- buf.write("\3\26\3\26\5\26\u011b\n\26\3\27\3\27\5\27\u011f\n\27\3")
- buf.write("\30\5\30\u0122\n\30\3\30\7\30\u0125\n\30\f\30\16\30\u0128")
- buf.write("\13\30\3\30\3\30\3\30\5\30\u012d\n\30\3\30\5\30\u0130")
- buf.write("\n\30\3\31\3\31\5\31\u0134\n\31\3\31\2\2\32\2\4\6\b\n")
- buf.write("\f\16\20\22\24\26\30\32\34\36 \"$&(*,.\60\2\2\u0153\2")
- buf.write("\62\3\2\2\2\49\3\2\2\2\6@\3\2\2\2\bG\3\2\2\2\nX\3\2\2")
- buf.write("\2\f[\3\2\2\2\16s\3\2\2\2\20v\3\2\2\2\22\u008f\3\2\2\2")
- buf.write("\24\u00a5\3\2\2\2\26\u00b5\3\2\2\2\30\u00ba\3\2\2\2\32")
- buf.write("\u00c4\3\2\2\2\34\u00cd\3\2\2\2\36\u00cf\3\2\2\2 \u00d6")
- buf.write("\3\2\2\2\"\u00d8\3\2\2\2$\u00dd\3\2\2\2&\u00e3\3\2\2\2")
- buf.write("(\u00f9\3\2\2\2*\u0107\3\2\2\2,\u011e\3\2\2\2.\u0121\3")
- buf.write("\2\2\2\60\u0133\3\2\2\2\62\66\5\4\3\2\63\65\5\n\6\2\64")
- buf.write("\63\3\2\2\2\658\3\2\2\2\66\64\3\2\2\2\66\67\3\2\2\2\67")
- buf.write("\3\3\2\2\28\66\3\2\2\29=\5\b\5\2:<\5\6\4\2;:\3\2\2\2<")
- buf.write("?\3\2\2\2=;\3\2\2\2=>\3\2\2\2>\5\3\2\2\2?=\3\2\2\2@A\7")
- buf.write("\3\2\2AB\7\37\2\2BD\7 \2\2CE\7\4\2\2DC\3\2\2\2DE\3\2\2")
- buf.write("\2E\7\3\2\2\2FH\7!\2\2GF\3\2\2\2GH\3\2\2\2HL\3\2\2\2I")
- buf.write("K\5\30\r\2JI\3\2\2\2KN\3\2\2\2LJ\3\2\2\2LM\3\2\2\2MO\3")
- buf.write("\2\2\2NL\3\2\2\2OP\7\5\2\2PQ\7\37\2\2QS\7 \2\2RT\7\4\2")
- buf.write("\2SR\3\2\2\2ST\3\2\2\2T\t\3\2\2\2UY\5\f\7\2VY\5&\24\2")
- buf.write("WY\5*\26\2XU\3\2\2\2XV\3\2\2\2XW\3\2\2\2Y\13\3\2\2\2Z")
- buf.write("\\\7!\2\2[Z\3\2\2\2[\\\3\2\2\2\\`\3\2\2\2]_\5\30\r\2^")
- buf.write("]\3\2\2\2_b\3\2\2\2`^\3\2\2\2`a\3\2\2\2ac\3\2\2\2b`\3")
- buf.write("\2\2\2cd\7\6\2\2de\7\37\2\2ei\7\7\2\2fh\5\16\b\2gf\3\2")
- buf.write("\2\2hk\3\2\2\2ig\3\2\2\2ij\3\2\2\2jl\3\2\2\2ki\3\2\2\2")
- buf.write("ln\7\b\2\2mo\7\4\2\2nm\3\2\2\2no\3\2\2\2o\r\3\2\2\2pt")
- buf.write("\5\20\t\2qt\5\24\13\2rt\5\22\n\2sp\3\2\2\2sq\3\2\2\2s")
- buf.write("r\3\2\2\2t\17\3\2\2\2uw\7!\2\2vu\3\2\2\2vw\3\2\2\2w{\3")
- buf.write("\2\2\2xz\5\30\r\2yx\3\2\2\2z}\3\2\2\2{y\3\2\2\2{|\3\2")
- buf.write("\2\2|\u0080\3\2\2\2}{\3\2\2\2~\u0081\5\34\17\2\177\u0081")
- buf.write("\7\t\2\2\u0080~\3\2\2\2\u0080\177\3\2\2\2\u0081\u0082")
- buf.write("\3\2\2\2\u0082\u0083\7\37\2\2\u0083\u0087\7\n\2\2\u0084")
- buf.write("\u0086\5\26\f\2\u0085\u0084\3\2\2\2\u0086\u0089\3\2\2")
- buf.write("\2\u0087\u0085\3\2\2\2\u0087\u0088\3\2\2\2\u0088\u008a")
- buf.write("\3\2\2\2\u0089\u0087\3\2\2\2\u008a\u008c\7\13\2\2\u008b")
- buf.write("\u008d\7\4\2\2\u008c\u008b\3\2\2\2\u008c\u008d\3\2\2\2")
- buf.write("\u008d\21\3\2\2\2\u008e\u0090\7!\2\2\u008f\u008e\3\2\2")
- buf.write("\2\u008f\u0090\3\2\2\2\u0090\u0094\3\2\2\2\u0091\u0093")
- buf.write("\5\30\r\2\u0092\u0091\3\2\2\2\u0093\u0096\3\2\2\2\u0094")
- buf.write("\u0092\3\2\2\2\u0094\u0095\3\2\2\2\u0095\u0097\3\2\2\2")
- buf.write("\u0096\u0094\3\2\2\2\u0097\u0098\7\f\2\2\u0098\u0099\7")
- buf.write("\37\2\2\u0099\u009d\7\n\2\2\u009a\u009c\5\26\f\2\u009b")
- buf.write("\u009a\3\2\2\2\u009c\u009f\3\2\2\2\u009d\u009b\3\2\2\2")
- buf.write("\u009d\u009e\3\2\2\2\u009e\u00a0\3\2\2\2\u009f\u009d\3")
- buf.write("\2\2\2\u00a0\u00a2\7\13\2\2\u00a1\u00a3\7\4\2\2\u00a2")
- buf.write("\u00a1\3\2\2\2\u00a2\u00a3\3\2\2\2\u00a3\23\3\2\2\2\u00a4")
- buf.write("\u00a6\7!\2\2\u00a5\u00a4\3\2\2\2\u00a5\u00a6\3\2\2\2")
- buf.write("\u00a6\u00aa\3\2\2\2\u00a7\u00a9\5\30\r\2\u00a8\u00a7")
- buf.write("\3\2\2\2\u00a9\u00ac\3\2\2\2\u00aa\u00a8\3\2\2\2\u00aa")
- buf.write("\u00ab\3\2\2\2\u00ab\u00ae\3\2\2\2\u00ac\u00aa\3\2\2\2")
- buf.write("\u00ad\u00af\7\r\2\2\u00ae\u00ad\3\2\2\2\u00ae\u00af\3")
- buf.write("\2\2\2\u00af\u00b0\3\2\2\2\u00b0\u00b1\5\34\17\2\u00b1")
- buf.write("\u00b3\7\37\2\2\u00b2\u00b4\7\4\2\2\u00b3\u00b2\3\2\2")
- buf.write("\2\u00b3\u00b4\3\2\2\2\u00b4\25\3\2\2\2\u00b5\u00b6\5")
- buf.write("\34\17\2\u00b6\u00b8\7\37\2\2\u00b7\u00b9\7\16\2\2\u00b8")
- buf.write("\u00b7\3\2\2\2\u00b8\u00b9\3\2\2\2\u00b9\27\3\2\2\2\u00ba")
- buf.write("\u00bb\7\36\2\2\u00bb\u00bf\7\n\2\2\u00bc\u00be\5\32\16")
- buf.write("\2\u00bd\u00bc\3\2\2\2\u00be\u00c1\3\2\2\2\u00bf\u00bd")
- buf.write("\3\2\2\2\u00bf\u00c0\3\2\2\2\u00c0\u00c2\3\2\2\2\u00c1")
- buf.write("\u00bf\3\2\2\2\u00c2\u00c3\7\13\2\2\u00c3\31\3\2\2\2\u00c4")
- buf.write("\u00c7\7\37\2\2\u00c5\u00c6\7\17\2\2\u00c6\u00c8\7\37")
- buf.write("\2\2\u00c7\u00c5\3\2\2\2\u00c7\u00c8\3\2\2\2\u00c8\33")
- buf.write("\3\2\2\2\u00c9\u00ce\5 \21\2\u00ca\u00ce\5\36\20\2\u00cb")
- buf.write("\u00ce\5\"\22\2\u00cc\u00ce\5$\23\2\u00cd\u00c9\3\2\2")
- buf.write("\2\u00cd\u00ca\3\2\2\2\u00cd\u00cb\3\2\2\2\u00cd\u00cc")
- buf.write("\3\2\2\2\u00ce\35\3\2\2\2\u00cf\u00d0\7\37\2\2\u00d0\37")
- buf.write("\3\2\2\2\u00d1\u00d7\7\20\2\2\u00d2\u00d7\7\21\2\2\u00d3")
- buf.write("\u00d7\7\22\2\2\u00d4\u00d7\7\23\2\2\u00d5\u00d7\7\24")
- buf.write("\2\2\u00d6\u00d1\3\2\2\2\u00d6\u00d2\3\2\2\2\u00d6\u00d3")
- buf.write("\3\2\2\2\u00d6\u00d4\3\2\2\2\u00d6\u00d5\3\2\2\2\u00d7")
- buf.write("!\3\2\2\2\u00d8\u00d9\7\25\2\2\u00d9\u00da\7\26\2\2\u00da")
- buf.write("\u00db\5\34\17\2\u00db\u00dc\7\27\2\2\u00dc#\3\2\2\2\u00dd")
- buf.write("\u00de\7\30\2\2\u00de\u00df\7\26\2\2\u00df\u00e0\5\34")
- buf.write("\17\2\u00e0\u00e1\7\27\2\2\u00e1%\3\2\2\2\u00e2\u00e4")
- buf.write("\7!\2\2\u00e3\u00e2\3\2\2\2\u00e3\u00e4\3\2\2\2\u00e4")
- buf.write("\u00e8\3\2\2\2\u00e5\u00e7\5\30\r\2\u00e6\u00e5\3\2\2")
- buf.write("\2\u00e7\u00ea\3\2\2\2\u00e8\u00e6\3\2\2\2\u00e8\u00e9")
- buf.write("\3\2\2\2\u00e9\u00eb\3\2\2\2\u00ea\u00e8\3\2\2\2\u00eb")
- buf.write("\u00ec\7\31\2\2\u00ec\u00ed\7\37\2\2\u00ed\u00f1\7\7\2")
- buf.write("\2\u00ee\u00f0\5(\25\2\u00ef\u00ee\3\2\2\2\u00f0\u00f3")
- buf.write("\3\2\2\2\u00f1\u00ef\3\2\2\2\u00f1\u00f2\3\2\2\2\u00f2")
- buf.write("\u00f4\3\2\2\2\u00f3\u00f1\3\2\2\2\u00f4\u00f6\7\b\2\2")
- buf.write("\u00f5\u00f7\7\4\2\2\u00f6\u00f5\3\2\2\2\u00f6\u00f7\3")
- buf.write("\2\2\2\u00f7\'\3\2\2\2\u00f8\u00fa\7!\2\2\u00f9\u00f8")
- buf.write("\3\2\2\2\u00f9\u00fa\3\2\2\2\u00fa\u00fe\3\2\2\2\u00fb")
- buf.write("\u00fd\5\30\r\2\u00fc\u00fb\3\2\2\2\u00fd\u0100\3\2\2")
- buf.write("\2\u00fe\u00fc\3\2\2\2\u00fe\u00ff\3\2\2\2\u00ff\u0101")
- buf.write("\3\2\2\2\u0100\u00fe\3\2\2\2\u0101\u0102\5\34\17\2\u0102")
- buf.write("\u0104\7\37\2\2\u0103\u0105\7\4\2\2\u0104\u0103\3\2\2")
- buf.write("\2\u0104\u0105\3\2\2\2\u0105)\3\2\2\2\u0106\u0108\7!\2")
- buf.write("\2\u0107\u0106\3\2\2\2\u0107\u0108\3\2\2\2\u0108\u010c")
- buf.write("\3\2\2\2\u0109\u010b\5\30\r\2\u010a\u0109\3\2\2\2\u010b")
- buf.write("\u010e\3\2\2\2\u010c\u010a\3\2\2\2\u010c\u010d\3\2\2\2")
- buf.write("\u010d\u010f\3\2\2\2\u010e\u010c\3\2\2\2\u010f\u0110\5")
- buf.write(",\27\2\u0110\u0111\7\37\2\2\u0111\u0115\7\7\2\2\u0112")
- buf.write("\u0114\5.\30\2\u0113\u0112\3\2\2\2\u0114\u0117\3\2\2\2")
- buf.write("\u0115\u0113\3\2\2\2\u0115\u0116\3\2\2\2\u0116\u0118\3")
- buf.write("\2\2\2\u0117\u0115\3\2\2\2\u0118\u011a\7\b\2\2\u0119\u011b")
- buf.write("\7\4\2\2\u011a\u0119\3\2\2\2\u011a\u011b\3\2\2\2\u011b")
- buf.write("+\3\2\2\2\u011c\u011f\7\32\2\2\u011d\u011f\7\33\2\2\u011e")
- buf.write("\u011c\3\2\2\2\u011e\u011d\3\2\2\2\u011f-\3\2\2\2\u0120")
- buf.write("\u0122\7!\2\2\u0121\u0120\3\2\2\2\u0121\u0122\3\2\2\2")
- buf.write("\u0122\u0126\3\2\2\2\u0123\u0125\5\30\r\2\u0124\u0123")
- buf.write("\3\2\2\2\u0125\u0128\3\2\2\2\u0126\u0124\3\2\2\2\u0126")
- buf.write("\u0127\3\2\2\2\u0127\u0129\3\2\2\2\u0128\u0126\3\2\2\2")
- buf.write("\u0129\u012c\7\37\2\2\u012a\u012b\7\17\2\2\u012b\u012d")
- buf.write("\5\60\31\2\u012c\u012a\3\2\2\2\u012c\u012d\3\2\2\2\u012d")
- buf.write("\u012f\3\2\2\2\u012e\u0130\7\16\2\2\u012f\u012e\3\2\2")
- buf.write("\2\u012f\u0130\3\2\2\2\u0130/\3\2\2\2\u0131\u0134\7\34")
- buf.write("\2\2\u0132\u0134\7\35\2\2\u0133\u0131\3\2\2\2\u0133\u0132")
- buf.write("\3\2\2\2\u0134\61\3\2\2\2\61\66=DGLSX[`insv{\u0080\u0087")
+ buf.write("\3\r\3\16\3\16\3\16\5\16\u00c8\n\16\3\16\5\16\u00cb\n")
+ buf.write("\16\3\17\3\17\3\17\3\17\5\17\u00d1\n\17\3\20\3\20\3\21")
+ buf.write("\3\21\3\21\3\21\3\21\5\21\u00da\n\21\3\22\3\22\3\22\3")
+ buf.write("\22\3\22\3\23\3\23\3\23\3\23\3\23\3\24\5\24\u00e7\n\24")
+ buf.write("\3\24\7\24\u00ea\n\24\f\24\16\24\u00ed\13\24\3\24\3\24")
+ buf.write("\3\24\3\24\7\24\u00f3\n\24\f\24\16\24\u00f6\13\24\3\24")
+ buf.write("\3\24\5\24\u00fa\n\24\3\25\5\25\u00fd\n\25\3\25\7\25\u0100")
+ buf.write("\n\25\f\25\16\25\u0103\13\25\3\25\3\25\3\25\5\25\u0108")
+ buf.write("\n\25\3\26\5\26\u010b\n\26\3\26\7\26\u010e\n\26\f\26\16")
+ buf.write("\26\u0111\13\26\3\26\3\26\3\26\3\26\7\26\u0117\n\26\f")
+ buf.write("\26\16\26\u011a\13\26\3\26\3\26\5\26\u011e\n\26\3\27\3")
+ buf.write("\27\5\27\u0122\n\27\3\30\5\30\u0125\n\30\3\30\7\30\u0128")
+ buf.write("\n\30\f\30\16\30\u012b\13\30\3\30\3\30\3\30\5\30\u0130")
+ buf.write("\n\30\3\30\5\30\u0133\n\30\3\31\3\31\5\31\u0137\n\31\3")
+ buf.write("\31\2\2\32\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36 \"$")
+ buf.write("&(*,.\60\2\2\u0157\2\62\3\2\2\2\49\3\2\2\2\6@\3\2\2\2")
+ buf.write("\bG\3\2\2\2\nX\3\2\2\2\f[\3\2\2\2\16s\3\2\2\2\20v\3\2")
+ buf.write("\2\2\22\u008f\3\2\2\2\24\u00a5\3\2\2\2\26\u00b5\3\2\2")
+ buf.write("\2\30\u00ba\3\2\2\2\32\u00c4\3\2\2\2\34\u00d0\3\2\2\2")
+ buf.write("\36\u00d2\3\2\2\2 \u00d9\3\2\2\2\"\u00db\3\2\2\2$\u00e0")
+ buf.write("\3\2\2\2&\u00e6\3\2\2\2(\u00fc\3\2\2\2*\u010a\3\2\2\2")
+ buf.write(",\u0121\3\2\2\2.\u0124\3\2\2\2\60\u0136\3\2\2\2\62\66")
+ buf.write("\5\4\3\2\63\65\5\n\6\2\64\63\3\2\2\2\658\3\2\2\2\66\64")
+ buf.write("\3\2\2\2\66\67\3\2\2\2\67\3\3\2\2\28\66\3\2\2\29=\5\b")
+ buf.write("\5\2:<\5\6\4\2;:\3\2\2\2<?\3\2\2\2=;\3\2\2\2=>\3\2\2\2")
+ buf.write(">\5\3\2\2\2?=\3\2\2\2@A\7\3\2\2AB\7\37\2\2BD\7 \2\2CE")
+ buf.write("\7\4\2\2DC\3\2\2\2DE\3\2\2\2E\7\3\2\2\2FH\7!\2\2GF\3\2")
+ buf.write("\2\2GH\3\2\2\2HL\3\2\2\2IK\5\30\r\2JI\3\2\2\2KN\3\2\2")
+ buf.write("\2LJ\3\2\2\2LM\3\2\2\2MO\3\2\2\2NL\3\2\2\2OP\7\5\2\2P")
+ buf.write("Q\7\37\2\2QS\7 \2\2RT\7\4\2\2SR\3\2\2\2ST\3\2\2\2T\t\3")
+ buf.write("\2\2\2UY\5\f\7\2VY\5&\24\2WY\5*\26\2XU\3\2\2\2XV\3\2\2")
+ buf.write("\2XW\3\2\2\2Y\13\3\2\2\2Z\\\7!\2\2[Z\3\2\2\2[\\\3\2\2")
+ buf.write("\2\\`\3\2\2\2]_\5\30\r\2^]\3\2\2\2_b\3\2\2\2`^\3\2\2\2")
+ buf.write("`a\3\2\2\2ac\3\2\2\2b`\3\2\2\2cd\7\6\2\2de\7\37\2\2ei")
+ buf.write("\7\7\2\2fh\5\16\b\2gf\3\2\2\2hk\3\2\2\2ig\3\2\2\2ij\3")
+ buf.write("\2\2\2jl\3\2\2\2ki\3\2\2\2ln\7\b\2\2mo\7\4\2\2nm\3\2\2")
+ buf.write("\2no\3\2\2\2o\r\3\2\2\2pt\5\20\t\2qt\5\24\13\2rt\5\22")
+ buf.write("\n\2sp\3\2\2\2sq\3\2\2\2sr\3\2\2\2t\17\3\2\2\2uw\7!\2")
+ buf.write("\2vu\3\2\2\2vw\3\2\2\2w{\3\2\2\2xz\5\30\r\2yx\3\2\2\2")
+ buf.write("z}\3\2\2\2{y\3\2\2\2{|\3\2\2\2|\u0080\3\2\2\2}{\3\2\2")
+ buf.write("\2~\u0081\5\34\17\2\177\u0081\7\t\2\2\u0080~\3\2\2\2\u0080")
+ buf.write("\177\3\2\2\2\u0081\u0082\3\2\2\2\u0082\u0083\7\37\2\2")
+ buf.write("\u0083\u0087\7\n\2\2\u0084\u0086\5\26\f\2\u0085\u0084")
+ buf.write("\3\2\2\2\u0086\u0089\3\2\2\2\u0087\u0085\3\2\2\2\u0087")
+ buf.write("\u0088\3\2\2\2\u0088\u008a\3\2\2\2\u0089\u0087\3\2\2\2")
+ buf.write("\u008a\u008c\7\13\2\2\u008b\u008d\7\4\2\2\u008c\u008b")
+ buf.write("\3\2\2\2\u008c\u008d\3\2\2\2\u008d\21\3\2\2\2\u008e\u0090")
+ buf.write("\7!\2\2\u008f\u008e\3\2\2\2\u008f\u0090\3\2\2\2\u0090")
+ buf.write("\u0094\3\2\2\2\u0091\u0093\5\30\r\2\u0092\u0091\3\2\2")
+ buf.write("\2\u0093\u0096\3\2\2\2\u0094\u0092\3\2\2\2\u0094\u0095")
+ buf.write("\3\2\2\2\u0095\u0097\3\2\2\2\u0096\u0094\3\2\2\2\u0097")
+ buf.write("\u0098\7\f\2\2\u0098\u0099\7\37\2\2\u0099\u009d\7\n\2")
+ buf.write("\2\u009a\u009c\5\26\f\2\u009b\u009a\3\2\2\2\u009c\u009f")
+ buf.write("\3\2\2\2\u009d\u009b\3\2\2\2\u009d\u009e\3\2\2\2\u009e")
+ buf.write("\u00a0\3\2\2\2\u009f\u009d\3\2\2\2\u00a0\u00a2\7\13\2")
+ buf.write("\2\u00a1\u00a3\7\4\2\2\u00a2\u00a1\3\2\2\2\u00a2\u00a3")
+ buf.write("\3\2\2\2\u00a3\23\3\2\2\2\u00a4\u00a6\7!\2\2\u00a5\u00a4")
+ buf.write("\3\2\2\2\u00a5\u00a6\3\2\2\2\u00a6\u00aa\3\2\2\2\u00a7")
+ buf.write("\u00a9\5\30\r\2\u00a8\u00a7\3\2\2\2\u00a9\u00ac\3\2\2")
+ buf.write("\2\u00aa\u00a8\3\2\2\2\u00aa\u00ab\3\2\2\2\u00ab\u00ae")
+ buf.write("\3\2\2\2\u00ac\u00aa\3\2\2\2\u00ad\u00af\7\r\2\2\u00ae")
+ buf.write("\u00ad\3\2\2\2\u00ae\u00af\3\2\2\2\u00af\u00b0\3\2\2\2")
+ buf.write("\u00b0\u00b1\5\34\17\2\u00b1\u00b3\7\37\2\2\u00b2\u00b4")
+ buf.write("\7\4\2\2\u00b3\u00b2\3\2\2\2\u00b3\u00b4\3\2\2\2\u00b4")
+ buf.write("\25\3\2\2\2\u00b5\u00b6\5\34\17\2\u00b6\u00b8\7\37\2\2")
+ buf.write("\u00b7\u00b9\7\16\2\2\u00b8\u00b7\3\2\2\2\u00b8\u00b9")
+ buf.write("\3\2\2\2\u00b9\27\3\2\2\2\u00ba\u00bb\7\36\2\2\u00bb\u00bf")
+ buf.write("\7\n\2\2\u00bc\u00be\5\32\16\2\u00bd\u00bc\3\2\2\2\u00be")
+ buf.write("\u00c1\3\2\2\2\u00bf\u00bd\3\2\2\2\u00bf\u00c0\3\2\2\2")
+ buf.write("\u00c0\u00c2\3\2\2\2\u00c1\u00bf\3\2\2\2\u00c2\u00c3\7")
+ buf.write("\13\2\2\u00c3\31\3\2\2\2\u00c4\u00c7\7\37\2\2\u00c5\u00c6")
+ buf.write("\7\17\2\2\u00c6\u00c8\7\37\2\2\u00c7\u00c5\3\2\2\2\u00c7")
+ buf.write("\u00c8\3\2\2\2\u00c8\u00ca\3\2\2\2\u00c9\u00cb\7\16\2")
+ buf.write("\2\u00ca\u00c9\3\2\2\2\u00ca\u00cb\3\2\2\2\u00cb\33\3")
+ buf.write("\2\2\2\u00cc\u00d1\5 \21\2\u00cd\u00d1\5\36\20\2\u00ce")
+ buf.write("\u00d1\5\"\22\2\u00cf\u00d1\5$\23\2\u00d0\u00cc\3\2\2")
+ buf.write("\2\u00d0\u00cd\3\2\2\2\u00d0\u00ce\3\2\2\2\u00d0\u00cf")
+ buf.write("\3\2\2\2\u00d1\35\3\2\2\2\u00d2\u00d3\7\37\2\2\u00d3\37")
+ buf.write("\3\2\2\2\u00d4\u00da\7\20\2\2\u00d5\u00da\7\21\2\2\u00d6")
+ buf.write("\u00da\7\22\2\2\u00d7\u00da\7\23\2\2\u00d8\u00da\7\24")
+ buf.write("\2\2\u00d9\u00d4\3\2\2\2\u00d9\u00d5\3\2\2\2\u00d9\u00d6")
+ buf.write("\3\2\2\2\u00d9\u00d7\3\2\2\2\u00d9\u00d8\3\2\2\2\u00da")
+ buf.write("!\3\2\2\2\u00db\u00dc\7\25\2\2\u00dc\u00dd\7\26\2\2\u00dd")
+ buf.write("\u00de\5\34\17\2\u00de\u00df\7\27\2\2\u00df#\3\2\2\2\u00e0")
+ buf.write("\u00e1\7\30\2\2\u00e1\u00e2\7\26\2\2\u00e2\u00e3\5\34")
+ buf.write("\17\2\u00e3\u00e4\7\27\2\2\u00e4%\3\2\2\2\u00e5\u00e7")
+ buf.write("\7!\2\2\u00e6\u00e5\3\2\2\2\u00e6\u00e7\3\2\2\2\u00e7")
+ buf.write("\u00eb\3\2\2\2\u00e8\u00ea\5\30\r\2\u00e9\u00e8\3\2\2")
+ buf.write("\2\u00ea\u00ed\3\2\2\2\u00eb\u00e9\3\2\2\2\u00eb\u00ec")
+ buf.write("\3\2\2\2\u00ec\u00ee\3\2\2\2\u00ed\u00eb\3\2\2\2\u00ee")
+ buf.write("\u00ef\7\31\2\2\u00ef\u00f0\7\37\2\2\u00f0\u00f4\7\7\2")
+ buf.write("\2\u00f1\u00f3\5(\25\2\u00f2\u00f1\3\2\2\2\u00f3\u00f6")
+ buf.write("\3\2\2\2\u00f4\u00f2\3\2\2\2\u00f4\u00f5\3\2\2\2\u00f5")
+ buf.write("\u00f7\3\2\2\2\u00f6\u00f4\3\2\2\2\u00f7\u00f9\7\b\2\2")
+ buf.write("\u00f8\u00fa\7\4\2\2\u00f9\u00f8\3\2\2\2\u00f9\u00fa\3")
+ buf.write("\2\2\2\u00fa\'\3\2\2\2\u00fb\u00fd\7!\2\2\u00fc\u00fb")
+ buf.write("\3\2\2\2\u00fc\u00fd\3\2\2\2\u00fd\u0101\3\2\2\2\u00fe")
+ buf.write("\u0100\5\30\r\2\u00ff\u00fe\3\2\2\2\u0100\u0103\3\2\2")
+ buf.write("\2\u0101\u00ff\3\2\2\2\u0101\u0102\3\2\2\2\u0102\u0104")
+ buf.write("\3\2\2\2\u0103\u0101\3\2\2\2\u0104\u0105\5\34\17\2\u0105")
+ buf.write("\u0107\7\37\2\2\u0106\u0108\7\4\2\2\u0107\u0106\3\2\2")
+ buf.write("\2\u0107\u0108\3\2\2\2\u0108)\3\2\2\2\u0109\u010b\7!\2")
+ buf.write("\2\u010a\u0109\3\2\2\2\u010a\u010b\3\2\2\2\u010b\u010f")
+ buf.write("\3\2\2\2\u010c\u010e\5\30\r\2\u010d\u010c\3\2\2\2\u010e")
+ buf.write("\u0111\3\2\2\2\u010f\u010d\3\2\2\2\u010f\u0110\3\2\2\2")
+ buf.write("\u0110\u0112\3\2\2\2\u0111\u010f\3\2\2\2\u0112\u0113\5")
+ buf.write(",\27\2\u0113\u0114\7\37\2\2\u0114\u0118\7\7\2\2\u0115")
+ buf.write("\u0117\5.\30\2\u0116\u0115\3\2\2\2\u0117\u011a\3\2\2\2")
+ buf.write("\u0118\u0116\3\2\2\2\u0118\u0119\3\2\2\2\u0119\u011b\3")
+ buf.write("\2\2\2\u011a\u0118\3\2\2\2\u011b\u011d\7\b\2\2\u011c\u011e")
+ buf.write("\7\4\2\2\u011d\u011c\3\2\2\2\u011d\u011e\3\2\2\2\u011e")
+ buf.write("+\3\2\2\2\u011f\u0122\7\32\2\2\u0120\u0122\7\33\2\2\u0121")
+ buf.write("\u011f\3\2\2\2\u0121\u0120\3\2\2\2\u0122-\3\2\2\2\u0123")
+ buf.write("\u0125\7!\2\2\u0124\u0123\3\2\2\2\u0124\u0125\3\2\2\2")
+ buf.write("\u0125\u0129\3\2\2\2\u0126\u0128\5\30\r\2\u0127\u0126")
+ buf.write("\3\2\2\2\u0128\u012b\3\2\2\2\u0129\u0127\3\2\2\2\u0129")
+ buf.write("\u012a\3\2\2\2\u012a\u012c\3\2\2\2\u012b\u0129\3\2\2\2")
+ buf.write("\u012c\u012f\7\37\2\2\u012d\u012e\7\17\2\2\u012e\u0130")
+ buf.write("\5\60\31\2\u012f\u012d\3\2\2\2\u012f\u0130\3\2\2\2\u0130")
+ buf.write("\u0132\3\2\2\2\u0131\u0133\7\16\2\2\u0132\u0131\3\2\2")
+ buf.write("\2\u0132\u0133\3\2\2\2\u0133/\3\2\2\2\u0134\u0137\7\34")
+ buf.write("\2\2\u0135\u0137\7\35\2\2\u0136\u0134\3\2\2\2\u0136\u0135")
+ buf.write("\3\2\2\2\u0137\61\3\2\2\2\62\66=DGLSX[`insv{\u0080\u0087")
buf.write("\u008c\u008f\u0094\u009d\u00a2\u00a5\u00aa\u00ae\u00b3")
- buf.write("\u00b8\u00bf\u00c7\u00cd\u00d6\u00e3\u00e8\u00f1\u00f6")
- buf.write("\u00f9\u00fe\u0104\u0107\u010c\u0115\u011a\u011e\u0121")
- buf.write("\u0126\u012c\u012f\u0133")
+ buf.write("\u00b8\u00bf\u00c7\u00ca\u00d0\u00d9\u00e6\u00eb\u00f4")
+ buf.write("\u00f9\u00fc\u0101\u0107\u010a\u010f\u0118\u011d\u0121")
+ buf.write("\u0124\u0129\u012f\u0132\u0136")
return buf.getvalue()
@@ -1303,6 +1305,14 @@ class TParser ( Parser ):
localctx.value = self.match(TParser.IDENTIFIER)
+ self.state = 200
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la==TParser.T__11:
+ self.state = 199
+ self.match(TParser.T__11)
+
+
except RecognitionException as re:
localctx.exception = re
self._errHandler.reportError(self, re)
@@ -1358,27 +1368,27 @@ class TParser ( Parser ):
localctx = TParser.TypeSymbolContext(self, self._ctx, self.state)
self.enterRule(localctx, 26, self.RULE_typeSymbol)
try:
- self.state = 203
+ self.state = 206
self._errHandler.sync(self)
token = self._input.LA(1)
if token in [TParser.T__13, TParser.T__14, TParser.T__15, TParser.T__16, TParser.T__17]:
self.enterOuterAlt(localctx, 1)
- self.state = 199
+ self.state = 202
self.primitiveTypeSymbol()
pass
elif token in [TParser.IDENTIFIER]:
self.enterOuterAlt(localctx, 2)
- self.state = 200
+ self.state = 203
self.complexTypeSymbol()
pass
elif token in [TParser.T__18]:
self.enterOuterAlt(localctx, 3)
- self.state = 201
+ self.state = 204
self.listTypeSymbol()
pass
elif token in [TParser.T__21]:
self.enterOuterAlt(localctx, 4)
- self.state = 202
+ self.state = 205
self.modelTypeSymbol()
pass
else:
@@ -1428,7 +1438,7 @@ class TParser ( Parser ):
self.enterRule(localctx, 28, self.RULE_complexTypeSymbol)
try:
self.enterOuterAlt(localctx, 1)
- self.state = 205
+ self.state = 208
localctx.name = self.match(TParser.IDENTIFIER)
except RecognitionException as re:
localctx.exception = re
@@ -1471,32 +1481,32 @@ class TParser ( Parser ):
localctx = TParser.PrimitiveTypeSymbolContext(self, self._ctx, self.state)
self.enterRule(localctx, 30, self.RULE_primitiveTypeSymbol)
try:
- self.state = 212
+ self.state = 215
self._errHandler.sync(self)
token = self._input.LA(1)
if token in [TParser.T__13]:
self.enterOuterAlt(localctx, 1)
- self.state = 207
+ self.state = 210
localctx.name = self.match(TParser.T__13)
pass
elif token in [TParser.T__14]:
self.enterOuterAlt(localctx, 2)
- self.state = 208
+ self.state = 211
localctx.name = self.match(TParser.T__14)
pass
elif token in [TParser.T__15]:
self.enterOuterAlt(localctx, 3)
- self.state = 209
+ self.state = 212
localctx.name = self.match(TParser.T__15)
pass
elif token in [TParser.T__16]:
self.enterOuterAlt(localctx, 4)
- self.state = 210
+ self.state = 213
localctx.name = self.match(TParser.T__16)
pass
elif token in [TParser.T__17]:
self.enterOuterAlt(localctx, 5)
- self.state = 211
+ self.state = 214
localctx.name = self.match(TParser.T__17)
pass
else:
@@ -1547,13 +1557,13 @@ class TParser ( Parser ):
self.enterRule(localctx, 32, self.RULE_listTypeSymbol)
try:
self.enterOuterAlt(localctx, 1)
- self.state = 214
+ self.state = 217
self.match(TParser.T__18)
- self.state = 215
+ self.state = 218
self.match(TParser.T__19)
- self.state = 216
+ self.state = 219
localctx.valueType = self.typeSymbol()
- self.state = 217
+ self.state = 220
self.match(TParser.T__20)
except RecognitionException as re:
localctx.exception = re
@@ -1600,13 +1610,13 @@ class TParser ( Parser ):
self.enterRule(localctx, 34, self.RULE_modelTypeSymbol)
try:
self.enterOuterAlt(localctx, 1)
- self.state = 219
+ self.state = 222
self.match(TParser.T__21)
- self.state = 220
+ self.state = 223
self.match(TParser.T__19)
- self.state = 221
+ self.state = 224
localctx.valueType = self.typeSymbol()
- self.state = 222
+ self.state = 225
self.match(TParser.T__20)
except RecognitionException as re:
localctx.exception = re
@@ -1671,47 +1681,47 @@ class TParser ( Parser ):
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
- self.state = 225
+ self.state = 228
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==TParser.DOCCOMMENT:
- self.state = 224
+ self.state = 227
localctx.comment = self.match(TParser.DOCCOMMENT)
- self.state = 230
+ self.state = 233
self._errHandler.sync(self)
_la = self._input.LA(1)
while _la==TParser.TAGIDENTIFIER:
- self.state = 227
+ self.state = 230
self.tagSymbol()
- self.state = 232
+ self.state = 235
self._errHandler.sync(self)
_la = self._input.LA(1)
- self.state = 233
+ self.state = 236
self.match(TParser.T__22)
- self.state = 234
+ self.state = 237
localctx.name = self.match(TParser.IDENTIFIER)
- self.state = 235
+ self.state = 238
self.match(TParser.T__4)
- self.state = 239
+ self.state = 242
self._errHandler.sync(self)
_la = self._input.LA(1)
while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << TParser.T__13) | (1 << TParser.T__14) | (1 << TParser.T__15) | (1 << TParser.T__16) | (1 << TParser.T__17) | (1 << TParser.T__18) | (1 << TParser.T__21) | (1 << TParser.TAGIDENTIFIER) | (1 << TParser.IDENTIFIER) | (1 << TParser.DOCCOMMENT))) != 0):
- self.state = 236
+ self.state = 239
self.structFieldSymbol()
- self.state = 241
+ self.state = 244
self._errHandler.sync(self)
_la = self._input.LA(1)
- self.state = 242
+ self.state = 245
self.match(TParser.T__5)
- self.state = 244
+ self.state = 247
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==TParser.T__1:
- self.state = 243
+ self.state = 246
self.match(TParser.T__1)
@@ -1775,33 +1785,33 @@ class TParser ( Parser ):
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
- self.state = 247
+ self.state = 250
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==TParser.DOCCOMMENT:
- self.state = 246
+ self.state = 249
localctx.comment = self.match(TParser.DOCCOMMENT)
- self.state = 252
+ self.state = 255
self._errHandler.sync(self)
_la = self._input.LA(1)
while _la==TParser.TAGIDENTIFIER:
- self.state = 249
+ self.state = 252
self.tagSymbol()
- self.state = 254
+ self.state = 257
self._errHandler.sync(self)
_la = self._input.LA(1)
- self.state = 255
+ self.state = 258
self.typeSymbol()
- self.state = 256
+ self.state = 259
localctx.name = self.match(TParser.IDENTIFIER)
- self.state = 258
+ self.state = 261
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==TParser.T__1:
- self.state = 257
+ self.state = 260
self.match(TParser.T__1)
@@ -1872,47 +1882,47 @@ class TParser ( Parser ):
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
- self.state = 261
+ self.state = 264
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==TParser.DOCCOMMENT:
- self.state = 260
+ self.state = 263
localctx.comment = self.match(TParser.DOCCOMMENT)
- self.state = 266
+ self.state = 269
self._errHandler.sync(self)
_la = self._input.LA(1)
while _la==TParser.TAGIDENTIFIER:
- self.state = 263
+ self.state = 266
self.tagSymbol()
- self.state = 268
+ self.state = 271
self._errHandler.sync(self)
_la = self._input.LA(1)
- self.state = 269
+ self.state = 272
self.enumTypeSymbol()
- self.state = 270
+ self.state = 273
localctx.name = self.match(TParser.IDENTIFIER)
- self.state = 271
+ self.state = 274
self.match(TParser.T__4)
- self.state = 275
+ self.state = 278
self._errHandler.sync(self)
_la = self._input.LA(1)
while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << TParser.TAGIDENTIFIER) | (1 << TParser.IDENTIFIER) | (1 << TParser.DOCCOMMENT))) != 0):
- self.state = 272
+ self.state = 275
self.enumMemberSymbol()
- self.state = 277
+ self.state = 280
self._errHandler.sync(self)
_la = self._input.LA(1)
- self.state = 278
+ self.state = 281
self.match(TParser.T__5)
- self.state = 280
+ self.state = 283
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==TParser.T__1:
- self.state = 279
+ self.state = 282
self.match(TParser.T__1)
@@ -1958,17 +1968,17 @@ class TParser ( Parser ):
localctx = TParser.EnumTypeSymbolContext(self, self._ctx, self.state)
self.enterRule(localctx, 42, self.RULE_enumTypeSymbol)
try:
- self.state = 284
+ self.state = 287
self._errHandler.sync(self)
token = self._input.LA(1)
if token in [TParser.T__23]:
self.enterOuterAlt(localctx, 1)
- self.state = 282
+ self.state = 285
localctx.isEnum = self.match(TParser.T__23)
pass
elif token in [TParser.T__24]:
self.enterOuterAlt(localctx, 2)
- self.state = 283
+ self.state = 286
localctx.isFlag = self.match(TParser.T__24)
pass
else:
@@ -2034,41 +2044,41 @@ class TParser ( Parser ):
self._la = 0 # Token type
try:
self.enterOuterAlt(localctx, 1)
- self.state = 287
+ self.state = 290
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==TParser.DOCCOMMENT:
- self.state = 286
+ self.state = 289
localctx.comment = self.match(TParser.DOCCOMMENT)
- self.state = 292
+ self.state = 295
self._errHandler.sync(self)
_la = self._input.LA(1)
while _la==TParser.TAGIDENTIFIER:
- self.state = 289
+ self.state = 292
self.tagSymbol()
- self.state = 294
+ self.state = 297
self._errHandler.sync(self)
_la = self._input.LA(1)
- self.state = 295
- localctx.name = self.match(TParser.IDENTIFIER)
self.state = 298
+ localctx.name = self.match(TParser.IDENTIFIER)
+ self.state = 301
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==TParser.T__12:
- self.state = 296
+ self.state = 299
self.match(TParser.T__12)
- self.state = 297
+ self.state = 300
self.intSymbol()
- self.state = 301
+ self.state = 304
self._errHandler.sync(self)
_la = self._input.LA(1)
if _la==TParser.T__11:
- self.state = 300
+ self.state = 303
self.match(TParser.T__11)
@@ -2118,17 +2128,17 @@ class TParser ( Parser ):
localctx = TParser.IntSymbolContext(self, self._ctx, self.state)
self.enterRule(localctx, 46, self.RULE_intSymbol)
try:
- self.state = 305
+ self.state = 308
self._errHandler.sync(self)
token = self._input.LA(1)
if token in [TParser.INTCONSTANT]:
self.enterOuterAlt(localctx, 1)
- self.state = 303
+ self.state = 306
localctx.value = self.match(TParser.INTCONSTANT)
pass
elif token in [TParser.HEXCONSTANT]:
self.enterOuterAlt(localctx, 2)
- self.state = 304
+ self.state = 307
localctx.value = self.match(TParser.HEXCONSTANT)
pass
else:
diff --git a/tests/in/com.pelagicore.ivi.tuner.qface b/tests/in/com.pelagicore.ivi.tuner.qface
index 0e6a20d..46b029b 100644
--- a/tests/in/com.pelagicore.ivi.tuner.qface
+++ b/tests/in/com.pelagicore.ivi.tuner.qface
@@ -3,7 +3,7 @@ module com.pelagicore.ivi.tuner 1.0;
/** Service Tuner */
@service()
@interface()
-@config(private)
+@config(private, b=B, c=C)
interface Tuner {
/** property currentStation */
readonly Station currentStation;
diff --git a/tests/in/com.pelagicore.ivi.tuner.yaml b/tests/in/com.pelagicore.ivi.tuner.yaml
index 948c50c..a320743 100644
--- a/tests/in/com.pelagicore.ivi.tuner.yaml
+++ b/tests/in/com.pelagicore.ivi.tuner.yaml
@@ -1,2 +1,6 @@
com.pelagicore.ivi.tuner.Tuner:
- port: 12345
+ port: 12345
+ config:
+ a: a
+ b: b
+
diff --git a/tests/test_tags.py b/tests/test_tags.py
index d22d46a..a205d93 100644
--- a/tests/test_tags.py
+++ b/tests/test_tags.py
@@ -51,4 +51,9 @@ def test_flag():
interface = system.lookup('com.pelagicore.ivi.tuner.Tuner')
assert interface
assert interface.attribute('config', 'private') is True
+ assert interface.attribute('config', 'a') == 'a' # use value from yaml
+ assert interface.attribute('config', 'b') == 'b' # use value from yaml
+ assert interface.attribute('config', 'c') == 'C' # use value from IDL
+
+