Index: Source/bindings/scripts/IDLParser.pm |
diff --git a/Source/bindings/scripts/IDLParser.pm b/Source/bindings/scripts/IDLParser.pm |
index 42c56360172249d02c88e4082e288333a804f150..aaf86501840d24c489d040e5ec273dabd531d236 100644 |
--- a/Source/bindings/scripts/IDLParser.pm |
+++ b/Source/bindings/scripts/IDLParser.pm |
@@ -75,6 +75,7 @@ struct( domAttribute => { |
struct( domSignature => { |
name => '$', # Variable name |
type => '$', # Variable type |
+ specials => '@', # Specials |
extendedAttributes => '$', # Extended attributes |
isOptional => '$', # Is variable optional (optional T) |
isNullable => '$', # Is variable type Nullable (T?) |
@@ -1205,12 +1206,13 @@ sub parseSpecialOperation |
my $next = $self->nextToken(); |
if ($next->value() =~ /$nextSpecials_1/) { |
- $self->parseSpecial(); |
- $self->parseSpecials(); |
+ my @specials = (); |
+ push(@specials, @{$self->parseSpecials()}); |
my $returnType = $self->parseReturnType(); |
my $interface = $self->parseOperationRest($extendedAttributeList); |
if (defined ($interface)) { |
$interface->signature->type($returnType); |
+ $interface->signature->specials(\@specials); |
} |
return $interface; |
} |
@@ -1220,16 +1222,17 @@ sub parseSpecialOperation |
sub parseSpecials |
{ |
my $self = shift; |
+ my @specials = (); |
while (1) { |
my $next = $self->nextToken(); |
if ($next->value() =~ /$nextSpecials_1/) { |
- $self->parseSpecial(); |
+ push(@specials, $self->parseSpecial()); |
} else { |
last; |
} |
} |
- return []; |
+ return \@specials; |
} |
sub parseSpecial |