@@ -6206,6 +6206,9 @@ class NewExpr : NewBaseExpr
62066206 regnew = self.tempreg(REGvar);
62076207 }
62086208
6209+ if (regnew == '')
6210+ regnew = self.tempreg(REGvar);
6211+
62096212 switch (type) {
62106213 case BYNAME:
62116214 // By name, usually a pmc.
@@ -6251,7 +6254,7 @@ class NewExpr : NewBaseExpr
62516254 }
62526255 if (numinits > 1 || (numinits >= 0 && type == BYIDENT)) {
62536256 self.emit_constructor(e, regnew, constructor);
6254- if (! is_init)
6257+ if (! is_init && result != '' )
62556258 e.emitset(result, regnew);
62566259 }
62576260 }
@@ -6294,6 +6297,10 @@ class NewIndexedExpr : NewBaseExpr
62946297 SyntaxError('Multiple init arguments not allowed here', self);
62956298 }
62966299 var nskey = self.nskey;
6300+
6301+ if (result == '')
6302+ result = self.tempreg(REGvar);
6303+
62976304 e.print(INDENT);
62986305 if (nskey.hasHLL())
62996306 e.print("root_");
@@ -6330,14 +6337,19 @@ class NewQualifiedExpr : NewBaseExpr
63306337 if (numinits > 0)
63316338 regnew = self.tempreg(REGvar);
63326339 var nskey = self.nskey;
6340+
6341+ if (regnew == '')
6342+ regnew = self.tempreg(REGvar);
6343+
63336344 e.print(INDENT, 'new ', regnew, ", ");
63346345 nskey.emit(e, self.owner);
63356346 e.say();
63366347
63376348 if (numinits >= 0) {
63386349 string constructor = nskey.last();
63396350 self.emit_constructor(e, regnew, constructor);
6340- e.emitset(result, regnew);
6351+ if (result != '')
6352+ e.emitset(result, regnew);
63416353 }
63426354 }
63436355}
0 commit comments