@@ -104,22 +104,36 @@ ClassBuilder lookupClassBuilder(CompilerResult compilerResult, Class cls,
104104 return clsBuilder;
105105}
106106
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+
107130MemberBuilder lookupMemberBuilder (CompilerResult compilerResult, Member member,
108131 {bool required : true }) {
109132 MemberBuilder memberBuilder;
110133 if (member.enclosingClass != null ) {
111- ClassBuilder classBuilder = lookupClassBuilder (
112- compilerResult, member.enclosingClass,
134+ memberBuilder = lookupClassMemberBuilder (
135+ compilerResult, member.enclosingClass, member, member.name.name,
113136 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- }
123137 } else {
124138 DeclarationBuilder libraryBuilder = lookupLibraryDeclarationBuilder (
125139 compilerResult, member.enclosingLibrary);
0 commit comments