Chromium Code Reviews| Index: lib/compiler/implementation/elements/elements.dart |
| diff --git a/lib/compiler/implementation/elements/elements.dart b/lib/compiler/implementation/elements/elements.dart |
| index 4bed08dbcd52e3cd2dae94dc80666b8befea235a..d9f00ebba25b598571cdfeeb194e3fb37c3caa21 100644 |
| --- a/lib/compiler/implementation/elements/elements.dart |
| +++ b/lib/compiler/implementation/elements/elements.dart |
| @@ -1374,21 +1374,17 @@ class ClassElement extends ScopeContainerElement |
| } |
| } |
| - Element lookupConstructor(SourceString className, |
| - [SourceString constructorName = |
| - const SourceString(''), |
| - Element noMatch(Element)]) { |
| + Element lookupConstructor(Selector selector, [Element noMatch(Element)]) { |
| // TODO(karlklose): have a map from class names to a map of constructors |
| // instead of creating the name here? |
| - SourceString normalizedName; |
| - if (constructorName !== const SourceString('')) { |
| - normalizedName = Elements.constructConstructorName(className, |
| - constructorName); |
| - } else { |
| - normalizedName = className; |
| - } |
| + SourceString normalizedName = |
| + Elements.constructConstructorNameFromOneName(selector.name); |
| + |
| Element result = localLookup(normalizedName); |
| - if (result === null || !result.isConstructor()) { |
| + |
| + if (result === null |
| + || !result.isConstructor() |
| + || (selector.isPrivate() && result.getLibrary() != selector.library)) { |
| result = noMatch !== null ? noMatch(result) : null; |
| } |
| return result; |
| @@ -1595,6 +1591,18 @@ class Elements { |
| return new SourceString('$r\$$s'); |
| } |
| + static SourceString constructConstructorNameFromOneName(SourceString name) { |
|
kasperl
2012/09/24 05:52:38
Somehow it would be simpler if the name stored in
ahe
2012/09/24 06:43:31
I'm uncomfortable about adding this method. The me
aam-me
2012/09/25 04:15:18
Okay, got rid of the method and storing normalized
|
| + var strName = name.slowToString(); |
|
kasperl
2012/09/24 05:52:38
Try to avoid abbreviations. I'd go for dotIndex an
|
| + var ndxDot = strName.indexOf("."); |
| + if (ndxDot >= 0) { |
| + return new SourceString( |
| + '${strName.substring(0, ndxDot)}\$' |
| + '${strName.substring(ndxDot + 1, strName.length)}'); |
| + } else { |
| + return name; |
| + } |
| + } |
| + |
| static const SourceString OPERATOR_EQUALS = |
| const SourceString(@'operator$eq'); |