View | Details | Raw Unified | Return to bug 159021 | Differences between
and this patch

Collapse All | Expand All

(-)compiler/org/eclipse/jdt/internal/compiler/ast/SingleNameReference.java (-32 / +30 lines)
Lines 347-387 Link Here
347
							codeStream.generateConstant(fieldConstant, implicitConversion);
347
							codeStream.generateConstant(fieldConstant, implicitConversion);
348
						}
348
						}
349
					} else {
349
					} else {
350
						if (valueRequired) {
350
						boolean isStatic = fieldBinding.isStatic();
351
							boolean isStatic = fieldBinding.isStatic();
351
						if (!isStatic) {
352
							if (!isStatic) {
352
							if ((bits & DepthMASK) != 0) {
353
								if ((bits & DepthMASK) != 0) {
353
								ReferenceBinding targetType = currentScope.enclosingSourceType().enclosingTypeAt((bits & DepthMASK) >> DepthSHIFT);
354
									ReferenceBinding targetType = currentScope.enclosingSourceType().enclosingTypeAt((bits & DepthMASK) >> DepthSHIFT);
354
								Object[] emulationPath = currentScope.getEmulationPath(targetType, true /*only exact match*/, false/*consider enclosing arg*/);
355
									Object[] emulationPath = currentScope.getEmulationPath(targetType, true /*only exact match*/, false/*consider enclosing arg*/);
355
								codeStream.generateOuterAccess(emulationPath, this, targetType, currentScope);
356
									codeStream.generateOuterAccess(emulationPath, this, targetType, currentScope);
357
								} else {
358
									generateReceiver(codeStream);
359
								}
360
							}
361
							// managing private access							
362
							if ((syntheticAccessors == null) || (syntheticAccessors[READ] == null)) {
363
								if (isStatic) {
364
									codeStream.getstatic(fieldBinding);
365
								} else {
366
									codeStream.getfield(fieldBinding);
367
								}
368
							} else {
356
							} else {
369
								codeStream.invokestatic(syntheticAccessors[READ]);
357
								generateReceiver(codeStream);
370
							}
358
							}
371
							if (valueRequired) {
359
						}
372
								if (this.genericCast != null) codeStream.checkcast(this.genericCast);			
360
						// managing private access							
373
								codeStream.generateImplicitConversion(implicitConversion);
361
						if ((syntheticAccessors == null) || (syntheticAccessors[READ] == null)) {
362
							if (isStatic) {
363
								codeStream.getstatic(fieldBinding);
374
							} else {
364
							} else {
375
								// could occur if !valueRequired but compliance >= 1.4
365
								codeStream.getfield(fieldBinding);
376
								switch (fieldBinding.type.id) {
366
							}
377
									case T_long :
367
						} else {
378
									case T_double :
368
							codeStream.invokestatic(syntheticAccessors[READ]);
379
										codeStream.pop2();
369
						}
380
										break;
370
						if (valueRequired) {
381
									default :
371
							if (this.genericCast != null) codeStream.checkcast(this.genericCast);			
382
										codeStream.pop();
372
							codeStream.generateImplicitConversion(implicitConversion);
383
								}
373
						} else {
384
							}							
374
							// could occur if !valueRequired but compliance >= 1.4
375
							switch (fieldBinding.type.id) {
376
								case T_long :
377
								case T_double :
378
									codeStream.pop2();
379
									break;
380
								default :
381
									codeStream.pop();
382
							}
385
						}
383
						}
386
					}
384
					}
387
					break;
385
					break;

Return to bug 159021