@@ -139,31 +139,37 @@ export class PresetsController implements vscode.Disposable {
139139 }
140140
141141 private readonly _setExpandedPresets = ( folder : string , presetsFile : preset . PresetsFile | undefined ) => {
142- preset . setExpandedPresets ( folder , presetsFile ) ;
143- this . _presetsChangedEmitter . fire ( presetsFile ) ;
142+ const clone = lodash . cloneDeep ( presetsFile ) ;
143+ preset . setExpandedPresets ( folder , clone ) ;
144+ this . _presetsChangedEmitter . fire ( clone ) ;
144145 } ;
145146
146147 private readonly _setExpandedUserPresetsFile = ( folder : string , presetsFile : preset . PresetsFile | undefined ) => {
147- preset . setExpandedUserPresetsFile ( folder , presetsFile ) ;
148- this . _userPresetsChangedEmitter . fire ( presetsFile ) ;
148+ const clone = lodash . cloneDeep ( presetsFile ) ;
149+ preset . setExpandedUserPresetsFile ( folder , clone ) ;
150+ this . _userPresetsChangedEmitter . fire ( clone ) ;
149151 } ;
150152
151153 private readonly _setPresetsPlusIncluded = ( folder : string , presetsFile : preset . PresetsFile | undefined ) => {
152- preset . setPresetsPlusIncluded ( folder , presetsFile ) ;
153- this . _presetsChangedEmitter . fire ( presetsFile ) ;
154+ const clone = lodash . cloneDeep ( presetsFile ) ;
155+ preset . setPresetsPlusIncluded ( folder , clone ) ;
156+ this . _presetsChangedEmitter . fire ( clone ) ;
154157 } ;
155158
156159 private readonly _setUserPresetsPlusIncluded = ( folder : string , presetsFile : preset . PresetsFile | undefined ) => {
157- preset . setUserPresetsPlusIncluded ( folder , presetsFile ) ;
158- this . _userPresetsChangedEmitter . fire ( presetsFile ) ;
160+ const clone = lodash . cloneDeep ( presetsFile ) ;
161+ preset . setUserPresetsPlusIncluded ( folder , clone ) ;
162+ this . _userPresetsChangedEmitter . fire ( clone ) ;
159163 } ;
160164
161165 private readonly _setOriginalPresetsFile = ( folder : string , presetsFile : preset . PresetsFile | undefined ) => {
162- preset . setOriginalPresetsFile ( folder , presetsFile ) ;
166+ const clone = lodash . cloneDeep ( presetsFile ) ;
167+ preset . setOriginalPresetsFile ( folder , clone ) ;
163168 } ;
164169
165170 private readonly _setOriginalUserPresetsFile = ( folder : string , presetsFile : preset . PresetsFile | undefined ) => {
166- preset . setOriginalUserPresetsFile ( folder , presetsFile ) ;
171+ const clone = lodash . cloneDeep ( presetsFile ) ;
172+ preset . setOriginalUserPresetsFile ( folder , clone ) ;
167173 } ;
168174
169175 private async resetPresetsFile ( file : string , setExpandedPresets : SetPresetsFileFunc , setPresetsPlusIncluded : SetPresetsFileFunc , setOriginalPresetsFile : SetPresetsFileFunc , fileExistCallback : ( fileExists : boolean ) => void , referencedFiles : Map < string , preset . PresetsFile | undefined > ) {
@@ -176,8 +182,7 @@ export class PresetsController implements vscode.Disposable {
176182 let presetsFile = await this . parsePresetsFile ( presetsFileBuffer , file ) ;
177183 referencedFiles . set ( file , presetsFile ) ;
178184 if ( presetsFile ) {
179- // Parse again so we automatically have a copy by value
180- setOriginalPresetsFile ( this . folderPath , await this . parsePresetsFile ( presetsFileBuffer , file ) ) ;
185+ setOriginalPresetsFile ( this . folderPath , presetsFile ) ;
181186 } else {
182187 setOriginalPresetsFile ( this . folderPath , undefined ) ;
183188 }
@@ -188,14 +193,12 @@ export class PresetsController implements vscode.Disposable {
188193 this . populatePrivatePresetsFields ( presetsFile , file ) ;
189194 await this . mergeIncludeFiles ( presetsFile , file , referencedFiles ) ;
190195
191- const copyOfPresetsFile = lodash . cloneDeep ( presetsFile ) ;
192196 // add the include files to the original presets file
193- setPresetsPlusIncluded ( this . folderPath , copyOfPresetsFile ) ;
197+ setPresetsPlusIncluded ( this . folderPath , presetsFile ) ;
194198
195- const copyAgain = lodash . cloneDeep ( copyOfPresetsFile ) ;
196199 // set the pre-expanded version so we can call expandPresetsFile on it
197- setExpandedPresets ( this . folderPath , copyAgain ) ;
198- presetsFile = await this . expandPresetsFile ( copyAgain ) ;
200+ setExpandedPresets ( this . folderPath , presetsFile ) ;
201+ presetsFile = await this . expandPresetsFile ( presetsFile ) ;
199202 }
200203
201204 setExpandedPresets ( this . folderPath , presetsFile ) ;
@@ -1718,14 +1721,12 @@ export class PresetsController implements vscode.Disposable {
17181721 return undefined ;
17191722 }
17201723
1721- const clonedPresetsFile = lodash . cloneDeep ( presetsFile ) ;
1722-
17231724 log . info ( localize ( 'expanding.presets.file' , 'Expanding presets file {0}' , presetsFile ?. __path || '' ) ) ;
17241725
17251726 const expansionErrors : ExpansionErrorHandler = { errorList : [ ] , tempErrorList : [ ] } ;
17261727
17271728 const expandedConfigurePresets : preset . ConfigurePreset [ ] = [ ] ;
1728- for ( const configurePreset of clonedPresetsFile ?. configurePresets || [ ] ) {
1729+ for ( const configurePreset of presetsFile ?. configurePresets || [ ] ) {
17291730 const inheritedPreset = await preset . getConfigurePresetInherits (
17301731 this . folderPath ,
17311732 configurePreset . name ,
@@ -1747,7 +1748,7 @@ export class PresetsController implements vscode.Disposable {
17471748 }
17481749
17491750 const expandedBuildPresets : preset . BuildPreset [ ] = [ ] ;
1750- for ( const buildPreset of clonedPresetsFile ?. buildPresets || [ ] ) {
1751+ for ( const buildPreset of presetsFile ?. buildPresets || [ ] ) {
17511752 const inheritedPreset = await preset . getBuildPresetInherits (
17521753 this . folderPath ,
17531754 buildPreset . name ,
@@ -1771,7 +1772,7 @@ export class PresetsController implements vscode.Disposable {
17711772 }
17721773
17731774 const expandedTestPresets : preset . TestPreset [ ] = [ ] ;
1774- for ( const testPreset of clonedPresetsFile ?. testPresets || [ ] ) {
1775+ for ( const testPreset of presetsFile ?. testPresets || [ ] ) {
17751776 const inheritedPreset = await preset . getTestPresetInherits (
17761777 this . folderPath ,
17771778 testPreset . name ,
@@ -1795,7 +1796,7 @@ export class PresetsController implements vscode.Disposable {
17951796 }
17961797
17971798 const expandedPackagePresets : preset . PackagePreset [ ] = [ ] ;
1798- for ( const packagePreset of clonedPresetsFile ?. packagePresets || [ ] ) {
1799+ for ( const packagePreset of presetsFile ?. packagePresets || [ ] ) {
17991800 const inheritedPreset = await preset . getPackagePresetInherits (
18001801 this . folderPath ,
18011802 packagePreset . name ,
@@ -1819,7 +1820,7 @@ export class PresetsController implements vscode.Disposable {
18191820 }
18201821
18211822 const expandedWorkflowPresets : preset . WorkflowPreset [ ] = [ ] ;
1822- for ( const workflowPreset of clonedPresetsFile ?. workflowPresets || [ ] ) {
1823+ for ( const workflowPreset of presetsFile ?. workflowPresets || [ ] ) {
18231824 const inheritedPreset = await preset . getWorkflowPresetInherits (
18241825 this . folderPath ,
18251826 workflowPreset . name ,
@@ -1837,7 +1838,7 @@ export class PresetsController implements vscode.Disposable {
18371838
18381839 if ( expansionErrors . errorList . length > 0 ) {
18391840 log . error ( localize ( 'expansion.errors' , 'Expansion errors found in the presets file.' ) ) ;
1840- await this . reportPresetsFileErrors ( clonedPresetsFile . __path , expansionErrors ) ;
1841+ await this . reportPresetsFileErrors ( presetsFile . __path , expansionErrors ) ;
18411842 return undefined ;
18421843 } else {
18431844 log . info ( localize ( 'successfully.expanded.presets.file' , 'Successfully expanded presets file {0}' , presetsFile ?. __path || '' ) ) ;
@@ -1851,7 +1852,7 @@ export class PresetsController implements vscode.Disposable {
18511852 presetsFile . workflowPresets = expandedWorkflowPresets ;
18521853
18531854 // clear out the errors since there are none now
1854- collections . presets . set ( vscode . Uri . file ( clonedPresetsFile . __path || "" ) , undefined ) ;
1855+ collections . presets . set ( vscode . Uri . file ( presetsFile . __path || "" ) , undefined ) ;
18551856
18561857 return presetsFile ;
18571858 }
0 commit comments