Skip to content

Commit

Permalink
[v3.8.6] Fix two inline enum bugs. (#79)
Browse files Browse the repository at this point in the history
* Update version to 2.3.5

* [v3.8.6] Fix two inline enum bugs.

* Add two new inline enum tests.

* Update snapshot.
  • Loading branch information
dumganhar authored Jan 14, 2025
1 parent bdabbc5 commit 55dfa46
Show file tree
Hide file tree
Showing 7 changed files with 363 additions and 157 deletions.

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ class EnumInliner {
} else {
return node;
}
const symbol = typeChecker.getSymbolAtLocation(accessName);
const symbol: (ts.Symbol & { parent?: ts.Symbol }) | undefined = typeChecker.getSymbolAtLocation(accessName);

// Doesn't support template string now.
if (node.parent && ts.isTemplateSpan(node.parent)) {
Expand All @@ -120,8 +120,15 @@ class EnumInliner {
expressionName = node.expression.text;
} else if (ts.isPropertyAccessExpression(node.expression)) {
expressionName = node.expression.name.text;
} else if (ts.isNonNullExpression(node.expression)) {
if (symbol.parent) {
expressionName = symbol.parent.name;
} else {
console.warn(`NonNullExpression has no parent symbol: ${node.expression.getText()}`);
return node;
}
} else {
console.warn(`Unsupported expression type: ${node.expression.getText()}`);
console.warn(`Unsupported expression type: ${node.expression.getText()}, kind: ${node.expression.kind}`);
return node;
}
const enumText = expressionName + '.' + accessName.text;
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@cocos/ccbuild",
"version": "2.3.4",
"version": "2.3.5",
"description": "The next generation of build tool for Cocos engine.",
"main": "./lib/index.js",
"types": "./lib/index.d.ts",
Expand Down
57 changes: 57 additions & 0 deletions test/build-engine/__snapshots__/engine-js.test.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -2696,6 +2696,63 @@ exports[`engine-js inline enum 2`] = `
exports("testConstantOfTypeArray", testConstantOfTypeArray);
var CCObjectFlags = exports("CCObjectFlags", {
Destroyed: 1,
RealDestroyed: 2,
ToDestroy: 4,
DontSave: 8,
EditorOnly: 16,
Dirty: 32,
DontDestroy: 64,
Destroying: 128,
Deactivating: 256,
LockedInEditor: 512,
HideInHierarchy: 1024,
IsOnEnableCalled: 2048,
IsEditorOnEnableCalled: 4096,
IsPreloadStarted: 8192,
IsOnLoadCalled: 16384,
IsOnLoadStarted: 32768,
IsStartCalled: 65536,
IsRotationLocked: 131072,
IsScaleLocked: 262144,
IsAnchorLocked: 524288,
IsSizeLocked: 1048576,
IsPositionLocked: 2097152,
PersistentMask: -4192741,
AllHideMasks: 1560
});
console.log("CCObjectFlags.Destroyed: " + 1);
console.log("CCObjectFlags.RealDestroyed: " + 2);
console.log("CCObjectFlags.ToDestroy: " + 4);
console.log("CCObjectFlags.DontSave: " + 8);
console.log("CCObjectFlags.EditorOnly: " + 16);
console.log("CCObjectFlags.Dirty: " + 32);
console.log("CCObjectFlags.DontDestroy: " + 64);
console.log("CCObjectFlags.Destroying: " + 128);
console.log("CCObjectFlags.Deactivating: " + 256);
console.log("CCObjectFlags.LockedInEditor: " + 512);
console.log("CCObjectFlags.HideInHierarchy: " + 1024);
console.log("CCObjectFlags.IsOnEnableCalled: " + 2048);
console.log("CCObjectFlags.IsEditorOnEnableCalled: " + 4096);
console.log("CCObjectFlags.IsPreloadStarted: " + 8192);
console.log("CCObjectFlags.IsOnLoadCalled: " + 16384);
console.log("CCObjectFlags.IsOnLoadStarted: " + 32768);
console.log("CCObjectFlags.IsStartCalled: " + 65536);
console.log("CCObjectFlags.IsRotationLocked: " + 131072);
console.log("CCObjectFlags.IsScaleLocked: " + 262144);
console.log("CCObjectFlags.IsAnchorLocked: " + 524288);
console.log("CCObjectFlags.IsSizeLocked: " + 1048576);
console.log("CCObjectFlags.IsPositionLocked: " + 2097152);
console.log("CCObjectFlags.PersistentMask: " + -4192741);
console.log("CCObjectFlags.AllHideMasks: " + 1560);
var data;
var uuidObjList = data[8];
var uuidPropList = data[9];
var uuidList = data[10];
console.log(uuidObjList);
console.log(uuidPropList);
console.log(uuidList);
var MyEnum = exports("MyEnum", {
AAA: 0,
BBB: 1,
Expand Down
26 changes: 26 additions & 0 deletions test/dts-bundler/__snapshots__/dts-bundler.test.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,32 @@ exports[`bundle dts: cc.d.ts content 1`] = `
FLIPPED_MASK = 268435455
}
export function testConstantOfTypeArray(): void;
export enum CCObjectFlags {
Destroyed = 1,
RealDestroyed = 2,
ToDestroy = 4,
DontSave = 8,
EditorOnly = 16,
Dirty = 32,
DontDestroy = 64,
Destroying = 128,
Deactivating = 256,
LockedInEditor = 512,
HideInHierarchy = 1024,
IsOnEnableCalled = 2048,
IsEditorOnEnableCalled = 4096,
IsPreloadStarted = 8192,
IsOnLoadCalled = 16384,
IsOnLoadStarted = 32768,
IsStartCalled = 65536,
IsRotationLocked = 131072,
IsScaleLocked = 262144,
IsAnchorLocked = 524288,
IsSizeLocked = 1048576,
IsPositionLocked = 2097152,
PersistentMask = "Bad expression <-4192741>",
AllHideMasks = 1560
}
export enum MyEnum {
AAA = 0,
BBB = 1,
Expand Down
89 changes: 89 additions & 0 deletions test/test-engine-source/cocos/enums/my-enum.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,92 @@
export enum CCObjectFlags {
Destroyed = 1 << 0,
RealDestroyed = 1 << 1,
ToDestroy = 1 << 2,
DontSave = 1 << 3,
EditorOnly = 1 << 4,
Dirty = 1 << 5,
DontDestroy = 1 << 6,
Destroying = 1 << 7,
Deactivating = 1 << 8,
LockedInEditor = 1 << 9,
HideInHierarchy = 1 << 10,

IsOnEnableCalled = 1 << 11,
IsEditorOnEnableCalled = 1 << 12,
IsPreloadStarted = 1 << 13,
IsOnLoadCalled = 1 << 14,
IsOnLoadStarted = 1 << 15,
IsStartCalled = 1 << 16,

IsRotationLocked = 1 << 17,
IsScaleLocked = 1 << 18,
IsAnchorLocked = 1 << 19,
IsSizeLocked = 1 << 20,
IsPositionLocked = 1 << 21,

// var Hide = HideInGame | HideInEditor,
// should not clone or serialize these flags
PersistentMask = ~(ToDestroy | Dirty | Destroying | DontDestroy | Deactivating
| IsPreloadStarted | IsOnLoadStarted | IsOnLoadCalled | IsStartCalled
| IsOnEnableCalled | IsEditorOnEnableCalled
| IsRotationLocked | IsScaleLocked | IsAnchorLocked | IsSizeLocked | IsPositionLocked
/* RegisteredInEditor */),

// all the hideFlags
AllHideMasks = DontSave | EditorOnly | LockedInEditor | HideInHierarchy,
}

console.log(`CCObjectFlags.Destroyed: ` + CCObjectFlags.Destroyed);
console.log(`CCObjectFlags.RealDestroyed: ` + CCObjectFlags.RealDestroyed);
console.log(`CCObjectFlags.ToDestroy: ` + CCObjectFlags.ToDestroy);
console.log(`CCObjectFlags.DontSave: ` + CCObjectFlags.DontSave);
console.log(`CCObjectFlags.EditorOnly: ` + CCObjectFlags.EditorOnly);
console.log(`CCObjectFlags.Dirty: ` + CCObjectFlags.Dirty);
console.log(`CCObjectFlags.DontDestroy: ` + CCObjectFlags.DontDestroy);
console.log(`CCObjectFlags.Destroying: ` + CCObjectFlags.Destroying);
console.log(`CCObjectFlags.Deactivating: ` + CCObjectFlags.Deactivating);
console.log(`CCObjectFlags.LockedInEditor: ` + CCObjectFlags.LockedInEditor);
console.log(`CCObjectFlags.HideInHierarchy: ` + CCObjectFlags.HideInHierarchy);
console.log(`CCObjectFlags.IsOnEnableCalled: ` + CCObjectFlags.IsOnEnableCalled);
console.log(`CCObjectFlags.IsEditorOnEnableCalled: ` + CCObjectFlags.IsEditorOnEnableCalled);
console.log(`CCObjectFlags.IsPreloadStarted: ` + CCObjectFlags.IsPreloadStarted);
console.log(`CCObjectFlags.IsOnLoadCalled: ` + CCObjectFlags.IsOnLoadCalled);
console.log(`CCObjectFlags.IsOnLoadStarted: ` + CCObjectFlags.IsOnLoadStarted);
console.log(`CCObjectFlags.IsStartCalled: ` + CCObjectFlags.IsStartCalled);
console.log(`CCObjectFlags.IsRotationLocked: ` + CCObjectFlags.IsRotationLocked);
console.log(`CCObjectFlags.IsScaleLocked: ` + CCObjectFlags.IsScaleLocked);
console.log(`CCObjectFlags.IsAnchorLocked: ` + CCObjectFlags.IsAnchorLocked);
console.log(`CCObjectFlags.IsSizeLocked: ` + CCObjectFlags.IsSizeLocked);
console.log(`CCObjectFlags.IsPositionLocked: ` + CCObjectFlags.IsPositionLocked);
console.log(`CCObjectFlags.PersistentMask: ` + CCObjectFlags.PersistentMask);
console.log(`CCObjectFlags.AllHideMasks: ` + CCObjectFlags.AllHideMasks);

const enum File {
Version = 0,
Context = 0,
SharedUuids,
SharedStrings,
SharedClasses,
SharedMasks,
Instances,
InstanceTypes,
Refs,
DependObjs,
DependKeys,
DependUuidIndices,
ARRAY_LENGTH,
}

let data: Record<File, any> | undefined;

const uuidObjList = data![File.DependObjs];
const uuidPropList = data![File.DependKeys];
const uuidList = data![File.DependUuidIndices];

console.log(uuidObjList);
console.log(uuidPropList);
console.log(uuidList);

export enum MyEnum {
AAA,
BBB,
Expand Down

0 comments on commit 55dfa46

Please sign in to comment.