Chromium Code Reviews| Index: runtime/vm/parser.cc |
| =================================================================== |
| --- runtime/vm/parser.cc (revision 3368) |
| +++ runtime/vm/parser.cc (working copy) |
| @@ -2984,9 +2984,19 @@ |
| ASSERT((CurrentToken() == Token::kIMPLEMENTS) || |
| (CurrentToken() == Token::kEXTENDS)); |
| GrowableArray<AbstractType*> interfaces; |
| + String& interface_name = String::Handle(); |
| do { |
| ConsumeToken(); |
| + intptr_t supertype_pos = token_index_; |
| AbstractType& interface = AbstractType::ZoneHandle(ParseType(kCanResolve)); |
| + interface_name = interface.Name(); |
| + for (int i = 0; i < interfaces.length(); i++) { |
| + String& other_name = String::Handle(interfaces[i]->Name()); |
| + if (interface_name.Equals(other_name)) { |
|
hausner
2012/01/18 01:06:16
I tried to use Equals on the type object directly,
regis
2012/01/18 01:29:40
Using the name seems brittle. How about using Abst
hausner
2012/01/18 17:44:00
As discussed in person: doing the check in the fin
|
| + ErrorMsg(supertype_pos, "Duplicate supertype '%s'", |
| + interface_name.ToCString()); |
| + } |
| + } |
| interfaces.Add(&interface); |
| } while (CurrentToken() == Token::kCOMMA); |
| return NewArray<AbstractType>(interfaces); |