summaryrefslogtreecommitdiff
path: root/idl/source
diff options
context:
space:
mode:
Diffstat (limited to 'idl/source')
-rw-r--r--idl/source/prj/database.cxx15
1 files changed, 13 insertions, 2 deletions
diff --git a/idl/source/prj/database.cxx b/idl/source/prj/database.cxx
index dc4cecb34895..4b0a58424558 100644
--- a/idl/source/prj/database.cxx
+++ b/idl/source/prj/database.cxx
@@ -174,8 +174,19 @@ bool SvIdlDataBase::ReadIdFile( std::string_view rOFileName )
if( !rTok.IsChar() || rTok.GetChar() != '<')
throw SvParseException( "expected '<'", rTok );
rTok = aTokStm.GetToken_Next();
- if( !rTok.IsIdentifier() )
- throw SvParseException( "expected identifier", rTok );
+ if (rTok.IsChar() && rTok.GetChar() == ':')
+ {
+ // add support for "::avmedia::MediaItem" namespaced identifier
+ rTok = aTokStm.GetToken_Next();
+ if( !rTok.IsChar() || rTok.GetChar() != ':')
+ throw SvParseException( "expected ':'", rTok );
+ // the lexer reads "avmedia::MediaItem" as an identifier
+ rTok = aTokStm.GetToken_Next();
+ if( !rTok.IsIdentifier() )
+ throw SvParseException( "expected identifier", rTok );
+ }
+ else if( !rTok.IsIdentifier() )
+ throw SvParseException( "expected identifier", rTok );
rTok = aTokStm.GetToken_Next();
if( !rTok.IsChar() || rTok.GetChar() != '>')
throw SvParseException( "expected '<'", rTok );