Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(347)

Side by Side Diff: Source/bindings/scripts/IDLParser.pm

Issue 14044026: Ready for latest WebIDL for named property getters. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink@master
Patch Set: fixed spaces Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 # 1 #
2 # KDOM IDL parser 2 # KDOM IDL parser
3 # 3 #
4 # Copyright (C) 2005 Nikolas Zimmermann <wildfox@kde.org> 4 # Copyright (C) 2005 Nikolas Zimmermann <wildfox@kde.org>
5 # 5 #
6 # This library is free software; you can redistribute it and/or 6 # This library is free software; you can redistribute it and/or
7 # modify it under the terms of the GNU Library General Public 7 # modify it under the terms of the GNU Library General Public
8 # License as published by the Free Software Foundation; either 8 # License as published by the Free Software Foundation; either
9 # version 2 of the License, or (at your option) any later version. 9 # version 2 of the License, or (at your option) any later version.
10 # 10 #
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 isStatic => '$', 68 isStatic => '$',
69 signature => '$', # Attribute signature 69 signature => '$', # Attribute signature
70 getterExceptions => '@', # Possibly raised exceptions. 70 getterExceptions => '@', # Possibly raised exceptions.
71 setterExceptions => '@', # Possibly raised exceptions. 71 setterExceptions => '@', # Possibly raised exceptions.
72 }); 72 });
73 73
74 # Used to represent a map of 'variable name' <-> 'variable type' 74 # Used to represent a map of 'variable name' <-> 'variable type'
75 struct( domSignature => { 75 struct( domSignature => {
76 name => '$', # Variable name 76 name => '$', # Variable name
77 type => '$', # Variable type 77 type => '$', # Variable type
78 specials => '@', # Specials
78 extendedAttributes => '$', # Extended attributes 79 extendedAttributes => '$', # Extended attributes
79 isOptional => '$', # Is variable optional (optional T) 80 isOptional => '$', # Is variable optional (optional T)
80 isNullable => '$', # Is variable type Nullable (T?) 81 isNullable => '$', # Is variable type Nullable (T?)
81 isVariadic => '$' # Is variable variadic (long... numbers) 82 isVariadic => '$' # Is variable variadic (long... numbers)
82 }); 83 });
83 84
84 # Used to represent string constants 85 # Used to represent string constants
85 struct( domConstant => { 86 struct( domConstant => {
86 name => '$', # DOM Constant identifier 87 name => '$', # DOM Constant identifier
87 type => '$', # Type of data 88 type => '$', # Type of data
(...skipping 1110 matching lines...) Expand 10 before | Expand all | Expand 10 after
1198 $self->assertUnexpectedToken($next->value(), __LINE__); 1199 $self->assertUnexpectedToken($next->value(), __LINE__);
1199 } 1200 }
1200 1201
1201 sub parseSpecialOperation 1202 sub parseSpecialOperation
1202 { 1203 {
1203 my $self = shift; 1204 my $self = shift;
1204 my $extendedAttributeList = shift; 1205 my $extendedAttributeList = shift;
1205 1206
1206 my $next = $self->nextToken(); 1207 my $next = $self->nextToken();
1207 if ($next->value() =~ /$nextSpecials_1/) { 1208 if ($next->value() =~ /$nextSpecials_1/) {
1208 $self->parseSpecial(); 1209 my @specials = ();
1209 $self->parseSpecials(); 1210 push(@specials, @{$self->parseSpecials()});
1210 my $returnType = $self->parseReturnType(); 1211 my $returnType = $self->parseReturnType();
1211 my $interface = $self->parseOperationRest($extendedAttributeList); 1212 my $interface = $self->parseOperationRest($extendedAttributeList);
1212 if (defined ($interface)) { 1213 if (defined ($interface)) {
1213 $interface->signature->type($returnType); 1214 $interface->signature->type($returnType);
1215 $interface->signature->specials(\@specials);
1214 } 1216 }
1215 return $interface; 1217 return $interface;
1216 } 1218 }
1217 $self->assertUnexpectedToken($next->value(), __LINE__); 1219 $self->assertUnexpectedToken($next->value(), __LINE__);
1218 } 1220 }
1219 1221
1220 sub parseSpecials 1222 sub parseSpecials
1221 { 1223 {
1222 my $self = shift; 1224 my $self = shift;
1225 my @specials = ();
1223 1226
1224 while (1) { 1227 while (1) {
1225 my $next = $self->nextToken(); 1228 my $next = $self->nextToken();
1226 if ($next->value() =~ /$nextSpecials_1/) { 1229 if ($next->value() =~ /$nextSpecials_1/) {
1227 $self->parseSpecial(); 1230 push(@specials, $self->parseSpecial());
1228 } else { 1231 } else {
1229 last; 1232 last;
1230 } 1233 }
1231 } 1234 }
1232 return []; 1235 return \@specials;
1233 } 1236 }
1234 1237
1235 sub parseSpecial 1238 sub parseSpecial
1236 { 1239 {
1237 my $self = shift; 1240 my $self = shift;
1238 my $next = $self->nextToken(); 1241 my $next = $self->nextToken();
1239 if ($next->value() eq "getter") { 1242 if ($next->value() eq "getter") {
1240 $self->assertTokenValue($self->getToken(), "getter", __LINE__); 1243 $self->assertTokenValue($self->getToken(), "getter", __LINE__);
1241 return "getter"; 1244 return "getter";
1242 } 1245 }
(...skipping 966 matching lines...) Expand 10 before | Expand all | Expand 10 after
2209 $customConstructor->{overloadedIndex} = $index++; 2212 $customConstructor->{overloadedIndex} = $index++;
2210 push(@{$interface->customConstructors}, $customConstructor); 2213 push(@{$interface->customConstructors}, $customConstructor);
2211 } 2214 }
2212 delete $extendedAttributeList->{"CustomConstructors"}; 2215 delete $extendedAttributeList->{"CustomConstructors"};
2213 $extendedAttributeList->{"CustomConstructor"} = "VALUE_IS_MISSING"; 2216 $extendedAttributeList->{"CustomConstructor"} = "VALUE_IS_MISSING";
2214 } 2217 }
2215 $interface->extendedAttributes($extendedAttributeList); 2218 $interface->extendedAttributes($extendedAttributeList);
2216 } 2219 }
2217 2220
2218 1; 2221 1;
OLDNEW
« no previous file with comments | « Source/bindings/scripts/IDLAttributes.txt ('k') | Source/bindings/tests/idls/TestEventTarget.idl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698