Do not allow package with missing version
e.g. android.hardware.foo::IFoo is not allowed.
Also, the regex rules in hidl-gen_l.ll and in FQName.cpp
was not consistent (optional version in hidl-gen_l.ll but
only minor version is optional in hidl-gen_y.yy). Hence
android.hardware.foo::IFoo has always been not allowed.
Still, the "?" is removed in both to make the rules consistent,
and there are explict checks in FQName::setTo and
FQName::applyDefaults to prevent this.
Test: compiles with mma
Change-Id: I9fd0a474c0313ab7c86c37f58f081a2c5a9b559c
diff --git a/hidl-gen_l.ll b/hidl-gen_l.ll
index 1fb0127..1275745 100644
--- a/hidl-gen_l.ll
+++ b/hidl-gen_l.ll
@@ -155,13 +155,13 @@
"?" { return('?'); }
"@" { return('@'); }
-{PATH}{VERSION}?"::"{PATH} { yylval->str = strdup(yytext); return token::FQNAME; }
+{PATH}{VERSION}"::"{PATH} { yylval->str = strdup(yytext); return token::FQNAME; }
{VERSION}"::"{PATH} { yylval->str = strdup(yytext); return token::FQNAME; }
{PATH}{VERSION} { yylval->str = strdup(yytext); return token::FQNAME; }
{COMPONENT}({DOT}{COMPONENT})+ { yylval->str = strdup(yytext); return token::FQNAME; }
{COMPONENT} { yylval->str = strdup(yytext); return token::IDENTIFIER; }
-{PATH}{VERSION}?"::"{PATH}":"{COMPONENT} { yylval->str = strdup(yytext); return token::FQNAME; }
+{PATH}{VERSION}"::"{PATH}":"{COMPONENT} { yylval->str = strdup(yytext); return token::FQNAME; }
{VERSION}"::"{PATH}":"{COMPONENT} { yylval->str = strdup(yytext); return token::FQNAME; }
{PATH}":"{COMPONENT} { yylval->str = strdup(yytext); return token::FQNAME; }