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: |