mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-08 11:38:21 +02:00
Fixed some loading issues
This commit is contained in:
parent
2bb2a5926a
commit
9c44273737
2 changed files with 67 additions and 35 deletions
|
@ -2236,6 +2236,34 @@ namespace IDE
|
|||
return .Err;
|
||||
}
|
||||
|
||||
void FlushDeferredLoadProjects()
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
bool hadLoad = false;
|
||||
for (int projectIdx = 0; projectIdx < mWorkspace.mProjects.Count; projectIdx++)
|
||||
{
|
||||
var project = mWorkspace.mProjects[projectIdx];
|
||||
if (project.mLoadDeferred)
|
||||
{
|
||||
hadLoad = true;
|
||||
|
||||
var projectPath = project.mProjectPath;
|
||||
if (!project.Load(projectPath))
|
||||
{
|
||||
OutputErrorLine("Failed to load project '{0}' from '{1}'", project.mProjectName, projectPath);
|
||||
LoadFailed();
|
||||
project.mFailed = true;
|
||||
}
|
||||
|
||||
AddProjectToWorkspace(project, false);
|
||||
}
|
||||
}
|
||||
if (!hadLoad)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
protected void LoadWorkspace(BeefVerb verb)
|
||||
{
|
||||
scope AutoBeefPerf("IDEApp.LoadWorkspace");
|
||||
|
@ -2428,30 +2456,7 @@ namespace IDE
|
|||
mWorkspace.Deserialize(data);
|
||||
}
|
||||
|
||||
while (true)
|
||||
{
|
||||
bool hadLoad = false;
|
||||
for (int projectIdx = 0; projectIdx < mWorkspace.mProjects.Count; projectIdx++)
|
||||
{
|
||||
var project = mWorkspace.mProjects[projectIdx];
|
||||
if (project.mLoadDeferred)
|
||||
{
|
||||
hadLoad = true;
|
||||
|
||||
var projectPath = project.mProjectPath;
|
||||
if (!project.Load(projectPath))
|
||||
{
|
||||
OutputErrorLine("Failed to load project '{0}' from '{1}'", project.mProjectName, projectPath);
|
||||
LoadFailed();
|
||||
project.mFailed = true;
|
||||
}
|
||||
|
||||
AddProjectToWorkspace(project, false);
|
||||
}
|
||||
}
|
||||
if (!hadLoad)
|
||||
break;
|
||||
}
|
||||
FlushDeferredLoadProjects();
|
||||
|
||||
mWorkspace.FinishDeserialize(data);
|
||||
mWorkspace.FixOptions(mConfigName, mPlatformName);
|
||||
|
@ -2465,6 +2470,8 @@ namespace IDE
|
|||
|
||||
public void RetryProjectLoad(Project project)
|
||||
{
|
||||
LoadConfig();
|
||||
|
||||
var projectPath = project.mProjectPath;
|
||||
if (!project.Load(projectPath))
|
||||
{
|
||||
|
@ -2474,9 +2481,12 @@ namespace IDE
|
|||
}
|
||||
else
|
||||
{
|
||||
FlushDeferredLoadProjects();
|
||||
mWorkspace.FixOptions();
|
||||
|
||||
project.mFailed = false;
|
||||
CurrentWorkspaceConfigChanged();
|
||||
mProjectPanel.RebuildUI();
|
||||
CurrentWorkspaceConfigChanged();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2493,14 +2503,9 @@ namespace IDE
|
|||
VerSpecRecord useVerSpecRecord = verSpecRecord;
|
||||
String verConfigDir = mWorkspace.mDir;
|
||||
|
||||
for (var project in mWorkspace.mProjects)
|
||||
{
|
||||
if (project.mProjectName == projectName)
|
||||
{
|
||||
return project;
|
||||
}
|
||||
}
|
||||
|
||||
if (let project = mWorkspace.FindProject(projectName))
|
||||
return project;
|
||||
|
||||
if (useVerSpecRecord.mVerSpec case .SemVer)
|
||||
{
|
||||
for (int regEntryIdx = mBeefConfig.mRegistry.Count - 1; regEntryIdx >= 0; regEntryIdx--)
|
||||
|
@ -2561,6 +2566,7 @@ namespace IDE
|
|||
project.mProjectName.Set(projectName);
|
||||
project.DeferLoad(projectFilePath);
|
||||
success = true;
|
||||
mWorkspace.AddProjectToCache(project);
|
||||
|
||||
/*if (!project.Load(projectFilePath))
|
||||
{
|
||||
|
@ -3797,6 +3803,15 @@ namespace IDE
|
|||
{
|
||||
CompilerLog("IDEApp.Compile");
|
||||
|
||||
for (let project in gApp.mWorkspace.mProjects)
|
||||
{
|
||||
if (project.mFailed)
|
||||
{
|
||||
OutputErrorLine("Project '{}' is not loaded. Retry loading by right clicking on the project in the Workspace panel and selecting 'Retry Load'", project.mProjectName);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (AreTestsRunning())
|
||||
return;
|
||||
if (mHotResolveState != .None)
|
||||
|
@ -8959,7 +8974,7 @@ namespace IDE
|
|||
projectError.Append(", ");
|
||||
projectError.Append(useProjectStack[i].mProjectName);
|
||||
}
|
||||
OutputLine(projectError);
|
||||
OutputErrorLine(projectError);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -667,6 +667,23 @@ namespace IDE
|
|||
mProjectNameMap.Clear();
|
||||
}
|
||||
|
||||
public void AddProjectToCache(Project project)
|
||||
{
|
||||
void Add(String name, Project project)
|
||||
{
|
||||
bool added = mProjectNameMap.TryAdd(name, var keyPtr, var valuePtr);
|
||||
if (!added)
|
||||
return;
|
||||
*keyPtr = new String(name);
|
||||
*valuePtr = project;
|
||||
}
|
||||
|
||||
Add(project.mProjectName, project);
|
||||
|
||||
for (var alias in project.mGeneralOptions.mAliases)
|
||||
Add(alias, project);
|
||||
}
|
||||
|
||||
public Project FindProject(StringView projectName)
|
||||
{
|
||||
if (mProjectNameMap.IsEmpty)
|
||||
|
@ -681,7 +698,7 @@ namespace IDE
|
|||
}
|
||||
|
||||
for (var project in mProjects)
|
||||
Add(project.mProjectName, project);;
|
||||
Add(project.mProjectName, project);
|
||||
|
||||
for (var project in mProjects)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue