Skip to content

Commit 0298939

Browse files
Remove Context.FoldersWithSourceFiles
This field was used during include detection, to collect the source folders whose source files should be processed for includes. This field was handled by the CollectAllSourceFilesFromFoldersWithSources pass, which finds all source files in these folders and adds them to the Context.CollectedSourceFiles queue instead. This commit changes all code that used to add directories to the FoldersWithSourceFiles queue to instead add all contained source files to the CollectedSourceFiles queue. For this, the CollectAllSourceFilesFromFoldersWithSources pass is transformed into regular function and renamed to QueueSourceFilesInFolder, so it can be directly called without needing any particular context entries. Note that the filename that contains the latter function is no longer entirely accurate, but this will be fixed in a later commit (left untouched in this commit to simplify review). Signed-off-by: Matthijs Kooijman <matthijs@stdin.nl>
1 parent 3a08c41 commit 0298939

9 files changed

+11
-194
lines changed

src/arduino.cc/builder/add_additional_entries_to_context.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,6 @@ func (s *AddAdditionalEntriesToContext) Run(ctx *types.Context) error {
6969
}
7070

7171
ctx.CollectedSourceFiles = &types.UniqueStringQueue{}
72-
ctx.FoldersWithSourceFiles = &types.UniqueSourceFolderQueue{}
7372

7473
ctx.LibrariesResolutionResults = make(map[string]types.LibraryResolutionResult)
7574
ctx.HardwareRewriteResults = make(map[*types.Platform][]types.PlatforKeyRewrite)

src/arduino.cc/builder/collect_all_source_files_from_folders_with_sources.go

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -35,24 +35,17 @@ import (
3535
"arduino.cc/builder/utils"
3636
)
3737

38-
type CollectAllSourceFilesFromFoldersWithSources struct{}
39-
40-
func (s *CollectAllSourceFilesFromFoldersWithSources) Run(ctx *types.Context) error {
41-
foldersWithSources := ctx.FoldersWithSourceFiles
42-
sourceFiles := ctx.CollectedSourceFiles
38+
func QueueSourceFilesFromFolder(queue *types.UniqueStringQueue, folder string, recurse bool) error {
4339
extensions := func(ext string) bool { return ADDITIONAL_FILE_VALID_EXTENSIONS_NO_HEADERS[ext] }
4440

4541
filePaths := []string{}
46-
for !foldersWithSources.Empty() {
47-
sourceFolder := foldersWithSources.Pop().(types.SourceFolder)
48-
err := utils.FindFilesInFolder(&filePaths, sourceFolder.Folder, extensions, sourceFolder.Recurse)
49-
if err != nil {
50-
return i18n.WrapError(err)
51-
}
42+
err := utils.FindFilesInFolder(&filePaths, folder, extensions, recurse)
43+
if err != nil {
44+
return i18n.WrapError(err)
5245
}
5346

5447
for _, filePath := range filePaths {
55-
sourceFiles.Push(filePath)
48+
queue.Push(filePath)
5649
}
5750

5851
return nil

src/arduino.cc/builder/container_find_includes.go

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -51,32 +51,21 @@ func (s *ContainerFindIncludes) Run(ctx *types.Context) error {
5151
sketch := ctx.Sketch
5252
ctx.CollectedSourceFiles.Push(filepath.Join(sketchBuildPath, filepath.Base(sketch.MainFile.Name)+".cpp"))
5353

54-
foldersWithSources := ctx.FoldersWithSourceFiles
55-
foldersWithSources.Push(types.SourceFolder{Folder: ctx.SketchBuildPath, Recurse: false})
54+
sourceFilePaths := ctx.CollectedSourceFiles
55+
QueueSourceFilesFromFolder(sourceFilePaths, ctx.SketchBuildPath, /* recurse */ false)
5656
srcSubfolderPath := filepath.Join(ctx.SketchBuildPath, constants.SKETCH_FOLDER_SRC)
5757
if info, err := os.Stat(srcSubfolderPath); err == nil && info.IsDir() {
58-
foldersWithSources.Push(types.SourceFolder{Folder: srcSubfolderPath, Recurse: true})
59-
}
60-
61-
err := runCommand(ctx, &CollectAllSourceFilesFromFoldersWithSources{})
62-
if err != nil {
63-
return i18n.WrapError(err)
58+
QueueSourceFilesFromFolder(sourceFilePaths, srcSubfolderPath, /* recurse */ true)
6459
}
6560

66-
sourceFilePaths := ctx.CollectedSourceFiles
67-
6861
for !sourceFilePaths.Empty() {
69-
err = findIncludesUntilDone(ctx, sourceFilePaths.Pop().(string))
70-
if err != nil {
71-
return i18n.WrapError(err)
72-
}
73-
err := runCommand(ctx, &CollectAllSourceFilesFromFoldersWithSources{})
62+
err := findIncludesUntilDone(ctx, sourceFilePaths.Pop().(string))
7463
if err != nil {
7564
return i18n.WrapError(err)
7665
}
7766
}
7867

79-
err = runCommand(ctx, &FailIfImportedLibraryIsWrong{})
68+
err := runCommand(ctx, &FailIfImportedLibraryIsWrong{})
8069
if err != nil {
8170
return i18n.WrapError(err)
8271
}

src/arduino.cc/builder/includes_to_include_folders.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,10 @@ func (s *IncludesToIncludeFolders) Run(ctx *types.Context) error {
5959
return nil;
6060
}
6161

62-
foldersWithSources := ctx.FoldersWithSourceFiles
63-
6462
importedLibraries = append(importedLibraries, newlyImportedLibrary)
6563
sourceFolders := types.LibraryToSourceFolder(newlyImportedLibrary)
6664
for _, sourceFolder := range sourceFolders {
67-
foldersWithSources.Push(sourceFolder)
65+
QueueSourceFilesFromFolder(ctx.CollectedSourceFiles, sourceFolder.Folder, sourceFolder.Recurse)
6866
}
6967
includeFolders = append(includeFolders, newlyImportedLibrary.SrcFolder)
7068

src/arduino.cc/builder/test/add_additional_entries_to_context_test.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ func TestAddAdditionalEntriesToContextNoBuildPath(t *testing.T) {
5252
require.NotNil(t, ctx.WarningsLevel)
5353

5454
require.True(t, ctx.CollectedSourceFiles.Empty())
55-
require.True(t, ctx.FoldersWithSourceFiles.Empty())
5655

5756
require.Equal(t, 0, len(ctx.LibrariesResolutionResults))
5857
}
@@ -72,7 +71,6 @@ func TestAddAdditionalEntriesToContextWithBuildPath(t *testing.T) {
7271
require.NotNil(t, ctx.WarningsLevel)
7372

7473
require.True(t, ctx.CollectedSourceFiles.Empty())
75-
require.True(t, ctx.FoldersWithSourceFiles.Empty())
7674

7775
require.Equal(t, 0, len(ctx.LibrariesResolutionResults))
7876
}

src/arduino.cc/builder/test/collect_all_source_files_from_folders_with_sources_test.go

Lines changed: 0 additions & 127 deletions
This file was deleted.

src/arduino.cc/builder/types/accessories.go

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -51,26 +51,3 @@ func (queue *UniqueStringQueue) Pop() interface{} {
5151
func (queue *UniqueStringQueue) Empty() bool {
5252
return queue.Len() == 0
5353
}
54-
55-
type UniqueSourceFolderQueue []SourceFolder
56-
57-
func (queue UniqueSourceFolderQueue) Len() int { return len(queue) }
58-
func (queue UniqueSourceFolderQueue) Less(i, j int) bool { return false }
59-
func (queue UniqueSourceFolderQueue) Swap(i, j int) { panic("Who called me?!?") }
60-
61-
func (queue *UniqueSourceFolderQueue) Push(value SourceFolder) {
62-
if !sliceContainsSourceFolder(*queue, value) {
63-
*queue = append(*queue, value)
64-
}
65-
}
66-
67-
func (queue *UniqueSourceFolderQueue) Pop() interface{} {
68-
old := *queue
69-
x := old[0]
70-
*queue = old[1:]
71-
return x
72-
}
73-
74-
func (queue *UniqueSourceFolderQueue) Empty() bool {
75-
return queue.Len() == 0
76-
}

src/arduino.cc/builder/types/context.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ type Context struct {
4747
SketchObjectFiles []string
4848

4949
CollectedSourceFiles *UniqueStringQueue
50-
FoldersWithSourceFiles *UniqueSourceFolderQueue
5150

5251
Sketch *Sketch
5352
Source string

src/arduino.cc/builder/types/utils.go

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,3 @@ func sliceContains(slice []string, target string) bool {
3838
}
3939
return false
4040
}
41-
42-
func sliceContainsSourceFolder(slice []SourceFolder, target SourceFolder) bool {
43-
for _, elem := range slice {
44-
if elem.Folder == target.Folder {
45-
return true
46-
}
47-
}
48-
return false
49-
}

0 commit comments

Comments
 (0)