Skip to content

Commit cb982b1

Browse files
authored
fix: Defuse assert in finishResolveClass (#2567)
1 parent 688dcd2 commit cb982b1

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

src/resolver.ts

+5-3
Original file line numberDiff line numberDiff line change
@@ -3351,7 +3351,7 @@ export class Resolver extends DiagnosticEmitter {
33513351
let boundInstance = this.resolveProperty(boundPrototype, reportMode);
33523352
if (boundInstance) {
33533353
let fieldType = boundInstance.type;
3354-
assert(isPowerOf2(fieldType.byteSize));
3354+
if (fieldType == Type.void) break; // failed to resolve earlier
33553355
let needsLayout = true;
33563356
if (base) {
33573357
let existingMember = base.getMember(boundPrototype.name);
@@ -3374,10 +3374,12 @@ export class Resolver extends DiagnosticEmitter {
33743374
}
33753375
}
33763376
if (needsLayout) {
3377-
let mask = fieldType.byteSize - 1;
3377+
let byteSize = fieldType.byteSize;
3378+
assert(isPowerOf2(byteSize));
3379+
let mask = byteSize - 1;
33783380
if (memoryOffset & mask) memoryOffset = (memoryOffset | mask) + 1;
33793381
boundInstance.memoryOffset = memoryOffset;
3380-
memoryOffset += fieldType.byteSize;
3382+
memoryOffset += byteSize;
33813383
}
33823384
boundPrototype.instance = boundInstance;
33833385
instance.add(boundPrototype.name, boundPrototype); // reports

0 commit comments

Comments
 (0)