@@ -104,22 +104,36 @@ ClassBuilder lookupClassBuilder(CompilerResult compilerResult, Class cls,
104
104
return clsBuilder;
105
105
}
106
106
107
+ /// Look up the [MemberBuilder] for [member] through the [ClassBuilder] for
108
+ /// [cls] using [memberName] as its name.
109
+ MemberBuilder lookupClassMemberBuilder (
110
+ CompilerResult compilerResult, Class cls, Member member, String memberName,
111
+ {bool required : true }) {
112
+ ClassBuilder classBuilder =
113
+ lookupClassBuilder (compilerResult, cls, required : required );
114
+ MemberBuilder memberBuilder;
115
+ if (classBuilder != null ) {
116
+ if (member is Constructor ) {
117
+ memberBuilder = classBuilder.constructors.local[memberName];
118
+ } else if (member is Procedure && member.isSetter) {
119
+ memberBuilder = classBuilder.scope.setters[memberName];
120
+ } else {
121
+ memberBuilder = classBuilder.scope.local[memberName];
122
+ }
123
+ }
124
+ if (memberBuilder == null && required ) {
125
+ throw new ArgumentError ("MemberBuilder for $member not found." );
126
+ }
127
+ return memberBuilder;
128
+ }
129
+
107
130
MemberBuilder lookupMemberBuilder (CompilerResult compilerResult, Member member,
108
131
{bool required : true }) {
109
132
MemberBuilder memberBuilder;
110
133
if (member.enclosingClass != null ) {
111
- ClassBuilder classBuilder = lookupClassBuilder (
112
- compilerResult, member.enclosingClass,
134
+ memberBuilder = lookupClassMemberBuilder (
135
+ compilerResult, member.enclosingClass, member, member.name.name,
113
136
required : required );
114
- if (classBuilder != null ) {
115
- if (member is Constructor ) {
116
- memberBuilder = classBuilder.constructors.local[member.name.name];
117
- } else if (member is Procedure && member.isSetter) {
118
- memberBuilder = classBuilder.scope.setters[member.name.name];
119
- } else {
120
- memberBuilder = classBuilder.scope.local[member.name.name];
121
- }
122
- }
123
137
} else {
124
138
DeclarationBuilder libraryBuilder = lookupLibraryDeclarationBuilder (
125
139
compilerResult, member.enclosingLibrary);
0 commit comments