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

Collapse All | Expand All

(-)compiler/org/eclipse/jdt/internal/compiler/ast/QualifiedAllocationExpression.java (-2 / +16 lines)
Lines 110-116 Link Here
110
		int pc = codeStream.position;
110
		int pc = codeStream.position;
111
		ReferenceBinding allocatedType = this.codegenBinding.declaringClass;
111
		ReferenceBinding allocatedType = this.codegenBinding.declaringClass;
112
		codeStream.new_(allocatedType);
112
		codeStream.new_(allocatedType);
113
		if (valueRequired) {
113
		boolean isUnboxing = (this.implicitConversion & TypeIds.UNBOXING) != 0;
114
		if (valueRequired || isUnboxing) {
114
			codeStream.dup();
115
			codeStream.dup();
115
		}
116
		}
116
		// better highlight for allocation: display the type individually
117
		// better highlight for allocation: display the type individually
Lines 152-158 Link Here
152
			}
153
			}
153
			codeStream.invokespecial(this.syntheticAccessor);
154
			codeStream.invokespecial(this.syntheticAccessor);
154
		}
155
		}
155
		codeStream.generateImplicitConversion(this.implicitConversion);
156
		if (valueRequired) {
157
			codeStream.generateImplicitConversion(implicitConversion);
158
		} else if (isUnboxing) {
159
			// conversion only generated if unboxing
160
			codeStream.generateImplicitConversion(implicitConversion);
161
			switch (postConversionType(currentScope).id) {
162
				case T_long :
163
				case T_double :
164
					codeStream.pop2();
165
					break;
166
				default :
167
					codeStream.pop();
168
			}
169
		}
156
		codeStream.recordPositionsFrom(pc, this.sourceStart);
170
		codeStream.recordPositionsFrom(pc, this.sourceStart);
157
171
158
		if (this.anonymousType != null) {
172
		if (this.anonymousType != null) {
(-)compiler/org/eclipse/jdt/internal/compiler/ast/AllocationExpression.java (-2 / +16 lines)
Lines 84-90 Link Here
84
	ReferenceBinding allocatedType = this.codegenBinding.declaringClass;
84
	ReferenceBinding allocatedType = this.codegenBinding.declaringClass;
85
85
86
	codeStream.new_(allocatedType);
86
	codeStream.new_(allocatedType);
87
	if (valueRequired) {
87
	boolean isUnboxing = (this.implicitConversion & TypeIds.UNBOXING) != 0;
88
	if (valueRequired || isUnboxing) {
88
		codeStream.dup();
89
		codeStream.dup();
89
	}
90
	}
90
	// better highlight for allocation: display the type individually
91
	// better highlight for allocation: display the type individually
Lines 126-132 Link Here
126
		}
127
		}
127
		codeStream.invokespecial(syntheticAccessor);
128
		codeStream.invokespecial(syntheticAccessor);
128
	}
129
	}
129
	codeStream.generateImplicitConversion(this.implicitConversion);
130
	if (valueRequired) {
131
		codeStream.generateImplicitConversion(this.implicitConversion);
132
	} else if (isUnboxing) {
133
		// conversion only generated if unboxing
134
		codeStream.generateImplicitConversion(this.implicitConversion);
135
		switch (postConversionType(currentScope).id) {
136
			case T_long :
137
			case T_double :
138
				codeStream.pop2();
139
				break;
140
			default :
141
				codeStream.pop();
142
		}
143
	}
130
	codeStream.recordPositionsFrom(pc, this.sourceStart);
144
	codeStream.recordPositionsFrom(pc, this.sourceStart);
131
}
145
}
132
146

Return to bug 184957