src/share/classes/com/sun/tools/javac/comp/Lower.java

changeset 2207
756ae3791c45
parent 2183
75c8cde12ab6
child 2370
acd64168cf8b
equal deleted inserted replaced
2206:8acb838c9b79 2207:756ae3791c45
1376 List<JCExpression> args; // Any additional arguments to be passed along. 1376 List<JCExpression> args; // Any additional arguments to be passed along.
1377 if ((sym.flags() & STATIC) != 0) { 1377 if ((sym.flags() & STATIC) != 0) {
1378 ref = make.Ident(sym); 1378 ref = make.Ident(sym);
1379 args = make.Idents(md.params); 1379 args = make.Idents(md.params);
1380 } else { 1380 } else {
1381 Symbol msym = sym; 1381 JCExpression site = make.Ident(md.params.head);
1382 if (sym.owner.isInterface()) { 1382 if (acode % 2 != 0) {
1383 msym = msym.clone(types.supertype(accessor.owner.type).tsym); 1383 //odd access codes represent qualified super accesses - need to
1384 } 1384 //emit reference to the direct superclass, even if the refered
1385 ref = make.Select(make.Ident(md.params.head), msym); 1385 //member is from an indirect superclass (JLS 13.1)
1386 site.setType(types.erasure(types.supertype(vsym.owner.enclClass().type)));
1387 }
1388 ref = make.Select(site, sym);
1386 args = make.Idents(md.params.tail); 1389 args = make.Idents(md.params.tail);
1387 } 1390 }
1388 JCStatement stat; // The statement accessing the private symbol. 1391 JCStatement stat; // The statement accessing the private symbol.
1389 if (sym.kind == VAR) { 1392 if (sym.kind == VAR) {
1390 // Normalize out all odd access codes by taking floor modulo 2: 1393 // Normalize out all odd access codes by taking floor modulo 2:

mercurial