summaryrefslogtreecommitdiff
path: root/idl
diff options
context:
space:
mode:
Diffstat (limited to 'idl')
-rw-r--r--idl/source/prj/parser.cxx36
1 files changed, 15 insertions, 21 deletions
diff --git a/idl/source/prj/parser.cxx b/idl/source/prj/parser.cxx
index f9e2f0f8c53e..dc3340a214b8 100644
--- a/idl/source/prj/parser.cxx
+++ b/idl/source/prj/parser.cxx
@@ -397,31 +397,25 @@ void SvIdlParser::ReadInterfaceOrShellMethodOrAttribute( SvMetaAttribute& rAttr
throw SvParseException( rInStm, "no value for identifier <" + rAttr.aSlotId.getString() + "> " );
rAttr.aSlotId.SetValue(n);
- if( ReadIf( '(' ) )
+ Read( '(' );
+ // read method arguments
+ tools::SvRef<SvMetaType> xT(new SvMetaType() );
+ xT->SetRef(rAttr.GetType() );
+ rAttr.aType = xT;
+ sal_uInt32 nBeginPos = 0; // can not happen with Tell
+ while( nBeginPos != rInStm.Tell() )
{
- // read method arguments
- tools::SvRef<SvMetaType> xT(new SvMetaType() );
- xT->SetRef(rAttr.GetType() );
- rAttr.aType = xT;
- sal_uInt32 nBeginPos = 0; // can not happen with Tell
- while( nBeginPos != rInStm.Tell() )
+ nBeginPos = rInStm.Tell();
+ tools::SvRef<SvMetaAttribute> xAttr( new SvMetaAttribute() );
+ if( xAttr->ReadSvIdl( rBase, rInStm ) )
{
- nBeginPos = rInStm.Tell();
- tools::SvRef<SvMetaAttribute> xAttr( new SvMetaAttribute() );
- if( xAttr->ReadSvIdl( rBase, rInStm ) )
- {
- if( xAttr->Test( rInStm ) )
- rAttr.aType->GetAttrList().push_back( xAttr );
- }
- ReadIfDelimiter();
+ if( xAttr->Test( rInStm ) )
+ rAttr.aType->GetAttrList().push_back( xAttr );
}
- Read( ')' );
- rAttr.aType->SetType( MetaTypeType::Method );
- }
- if( ReadIf( '[' ) )
- {
- Read( ']' );
+ ReadIfDelimiter();
}
+ Read( ')' );
+ rAttr.aType->SetType( MetaTypeType::Method );
}
SvMetaClass * SvIdlParser::ReadKnownClass()