diff --git a/electron/main/index.ts b/electron/main/index.ts index 316baf2..2dcdb3d 100644 --- a/electron/main/index.ts +++ b/electron/main/index.ts @@ -78,7 +78,7 @@ if (buildOutput || buildProject || buildHelp) { declvar: treeModel.declvar.map((v) => ({ name: v.name, desc: v.desc })), subtree: [], }; - b3util.refreshDeclare(treeModel, declare); + b3util.refreshDeclare(treeModel.root, treeModel.group, declare); if (!b3util.checkNodeData(treeModel?.root)) { hasError = true; } diff --git a/src/behavior3 b/src/behavior3 index 13ebbcd..3322396 160000 --- a/src/behavior3 +++ b/src/behavior3 @@ -1 +1 @@ -Subproject commit 13ebbcde9ea69535b94e615e1fde286e15573daa +Subproject commit 3322396a42af40140bd75a43352fa0c81505967a diff --git a/src/contexts/workspace-context.ts b/src/contexts/workspace-context.ts index e0fdfbe..3494f27 100644 --- a/src/contexts/workspace-context.ts +++ b/src/contexts/workspace-context.ts @@ -372,7 +372,7 @@ export const useWorkspace = create((set, get) => ({ declvar: treeModel.declvar.map((v) => ({ name: v.name, desc: v.desc })), subtree: [], }; - b3util.refreshDeclare(treeModel, declare); + b3util.refreshDeclare(treeModel.root, treeModel.group, declare); if (!b3util.checkNodeData(treeModel?.root)) { hasError = true; } @@ -557,7 +557,7 @@ export const useWorkspace = create((set, get) => ({ if (!editor) { return; } - b3util.refreshDeclare(editor.data, editor.declare); + b3util.refreshDeclare(editor.root, editor.data.group, editor.declare); }, save: () => { diff --git a/src/misc/b3util.ts b/src/misc/b3util.ts index e658b4e..2c011dc 100644 --- a/src/misc/b3util.ts +++ b/src/misc/b3util.ts @@ -857,24 +857,24 @@ export const loadVarDef = (list: ImportDef[]) => { return Array.from(all); }; -const findSubtrees = (data: NodeModel) => { - const list: string[] = []; - const traverse = (v: NodeModel) => { - if (v.path) { - list.push(v.path); - } - if (v.children) { - v.children.forEach((child) => traverse(child)); - } - }; - traverse(data); +const collectSubtree = (data: TreeGraphData | NodeModel, list: string[] = []) => { + if (data.path) { + list.push(data.path); + } + if (data.children) { + data.children.forEach((child) => collectSubtree(child, list)); + } return list; }; -export const refreshDeclare = (tree: TreeModel, declare: FileVarDecl) => { +export const refreshDeclare = ( + root: TreeGraphData | NodeModel, + group: string[], + declare: FileVarDecl +) => { const vars: Set = new Set(declare.declvar.slice()); parsingStack.length = 0; - declare.subtree = findSubtrees(tree.root).map((v) => ({ + declare.subtree = collectSubtree(root).map((v) => ({ path: v, vars: [], depends: [], @@ -883,6 +883,6 @@ export const refreshDeclare = (tree: TreeModel, declare: FileVarDecl) => { loadVarDef(declare.subtree).forEach((v) => { vars.add(v); }); - updateUsingGroups(tree.group); + updateUsingGroups(group); updateUsingVars(Array.from(vars)); };