From 7894fc73cce1d21db93a08e76d752896471a11fd Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Wed, 15 Jan 2020 08:33:16 -0800 Subject: [PATCH] Improved handling of missing source file --- IDE/src/Compiler/BfCompiler.bf | 8 +++++++- IDE/src/Project.bf | 1 + IDE/src/ui/ErrorsPanel.bf | 3 +++ IDE/src/ui/ProjectPanel.bf | 7 +++++++ IDE/src/ui/SourceViewPanel.bf | 5 +++++ 5 files changed, 23 insertions(+), 1 deletion(-) diff --git a/IDE/src/Compiler/BfCompiler.bf b/IDE/src/Compiler/BfCompiler.bf index 9045d191..aacc1f5f 100644 --- a/IDE/src/Compiler/BfCompiler.bf +++ b/IDE/src/Compiler/BfCompiler.bf @@ -398,10 +398,16 @@ namespace IDE.Compiler if (data == null) { String msg = new String(); - msg.AppendF("FAILED TO LOAD FILE: {0}", sourceFilePath); + msg.AppendF("ERROR: FAILED TO LOAD FILE '{0}' in project '{1}'", sourceFilePath, projectSource.mProject.mProjectName); mQueuedOutput.Add(msg); passInstance.mFailed = true; + projectSourceCommand.mProjectSource.mLoadFailed = true; } + else + projectSourceCommand.mProjectSource.mLoadFailed = false; + + if (mIsResolveOnly) + projectSourceCommand.mProjectSource.mLoadFailed = data == null; if ((!mIsResolveOnly) && (data != null)) IDEApp.sApp.mWorkspace.ProjectSourceCompiled(projectSource, data, char8IdData, canMoveSourceString); diff --git a/IDE/src/Project.bf b/IDE/src/Project.bf index c77172aa..9d43fab3 100644 --- a/IDE/src/Project.bf +++ b/IDE/src/Project.bf @@ -266,6 +266,7 @@ namespace IDE public bool mHasChangedSinceLastCompile = true; public bool mHasChangedSinceLastSuccessfulCompile = true; + public bool mLoadFailed; public bool HasChangedSinceLastCompile { get diff --git a/IDE/src/ui/ErrorsPanel.bf b/IDE/src/ui/ErrorsPanel.bf index c1759743..49dab7f8 100644 --- a/IDE/src/ui/ErrorsPanel.bf +++ b/IDE/src/ui/ErrorsPanel.bf @@ -167,6 +167,9 @@ namespace IDE.ui if (passKind == .Parse) { + if (bfError.mFilePath == null) + bfError.mFilePath = new String(""); + bool added = mParseErrors.TryAdd(bfError.mFilePath, var keyPtr, var valuePtr); if (added) { diff --git a/IDE/src/ui/ProjectPanel.bf b/IDE/src/ui/ProjectPanel.bf index 8fe44bc7..fcd2ab25 100644 --- a/IDE/src/ui/ProjectPanel.bf +++ b/IDE/src/ui/ProjectPanel.bf @@ -53,6 +53,13 @@ namespace IDE.ui color = 0xFFE0E0FF; else if (projectItem.mIncludeKind == .Ignore) color = 0xFF909090; + + if (let projectSource = projectItem as ProjectSource) + { + if (projectSource.mLoadFailed) + color = 0xFFFF0000; + } + mTextColor = color; } diff --git a/IDE/src/ui/SourceViewPanel.bf b/IDE/src/ui/SourceViewPanel.bf index dbe1fec0..881b5361 100644 --- a/IDE/src/ui/SourceViewPanel.bf +++ b/IDE/src/ui/SourceViewPanel.bf @@ -1163,6 +1163,11 @@ namespace IDE.ui //BackgroundResolve(new () => { DoClassify(.Autocomplete, resolveParams); }); else if (useResolveType == .ClassifyFullRefresh) { + if ((mProjectSource?.mLoadFailed == true) && (!mLoadFailed)) + { + mProjectSource.mLoadFailed = false; + } + // To avoid "flashing" on proper colorization vs FastClassify, we wait a bit for the proper classifying to finish // on initial show int maxWait = (mUpdateCnt <= 1) ? 50 : 0;