Skip to content
This repository was archived by the owner on Sep 16, 2019. It is now read-only.
This repository was archived by the owner on Sep 16, 2019. It is now read-only.

Non-existent entity base classes are reported as circular dependencies #312

@SamVanheer

Description

@SamVanheer

When an entity base class does not exist Sledge reports it as having circular dependencies.

For example, this is from a Deleted Scenes fgd that has an incorrect baseclass:

@PointClass base(angle) = item_armor : "Armor" []

This generates the following error:

Circular dependencies: item_armor (System.Exception)
   bij Sledge.DataStructures.GameData.GameData.CreateDependencies() in D:\Github\sledge\Sledge.DataStructures\GameData\GameData.cs:regel 34
   bij Sledge.Providers.GameData.FgdGameDataProvider.GetGameDataFromFiles(IEnumerable`1 files) in D:\Github\sledge\Sledge.Providers\GameData\FgdGameDataProvider.cs:regel 24
   bij Sledge.BspEditor.Environment.Goldsource.GoldsourceEnvironment.MakeGameDataAsync() in D:\Github\sledge\Sledge.BspEditor\Environment\Goldsource\GoldsourceEnvironment.cs:regel 166
   bij System.Lazy`1.CreateValue()
   bij System.Lazy`1.LazyInitValue()
   bij System.Lazy`1.get_Value()
   bij Sledge.BspEditor.Environment.Goldsource.GoldsourceEnvironment.GetGameData() in D:\Github\sledge\Sledge.BspEditor\Environment\Goldsource\GoldsourceEnvironment.cs:regel 176
   bij Sledge.BspEditor.Grid.SquareGridFactory.<Create>d__26.MoveNext() in D:\Github\sledge\Sledge.BspEditor\Grid\SquareGridFactory.cs:regel 32
--- Einde van stacktracering vanaf vorige locatie waar uitzondering is opgetreden ---
   bij System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   bij System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bij Sledge.BspEditor.Providers.Processors.AddDefaults.<AfterLoad>d__4.MoveNext() in D:\Github\sledge\Sledge.BspEditor\Providers\Processors\AddDefaults.cs:regel 31
--- Einde van stacktracering vanaf vorige locatie waar uitzondering is opgetreden ---
   bij System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   bij System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bij Sledge.BspEditor.Documents.BspSourceDocumentLoader.<ProcessAfterLoad>d__41.MoveNext() in D:\Github\sledge\Sledge.BspEditor\Documents\BspSourceDocumentLoader.cs:regel 180
--- Einde van stacktracering vanaf vorige locatie waar uitzondering is opgetreden ---
   bij System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   bij System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bij Sledge.BspEditor.Documents.BspSourceDocumentLoader.<CreateBlank>d__39.MoveNext() in D:\Github\sledge\Sledge.BspEditor\Documents\BspSourceDocumentLoader.cs:regel 123
--- Einde van stacktracering vanaf vorige locatie waar uitzondering is opgetreden ---
   bij System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   bij System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bij Sledge.Shell.Registers.DocumentRegister.<NewDocument>d__13.MoveNext() in D:\Github\sledge\Sledge.Shell\Registers\DocumentRegister.cs:regel 86
--- Einde van stacktracering vanaf vorige locatie waar uitzondering is opgetreden ---
   bij System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   bij System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bij Sledge.Shell.Commands.NewFile.<Invoke>d__12.MoveNext() in D:\Github\sledge\Sledge.Shell\Commands\NewFile.cs:regel 64
--- Einde van stacktracering vanaf vorige locatie waar uitzondering is opgetreden ---
   bij System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   bij System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bij Sledge.Shell.Registers.CommandRegister.<Run>d__3.MoveNext() in D:\Github\sledge\Sledge.Shell\Registers\CommandRegister.cs:regel 58
--- Einde van stacktracering vanaf vorige locatie waar uitzondering is opgetreden ---
   bij System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   bij System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bij LogicAndTrick.Oy.InMemoryMessageBus.<>c__DisplayClass5_0`1.<<Subscribe>b__0>d.MoveNext()
--- Einde van stacktracering vanaf vorige locatie waar uitzondering is opgetreden ---
   bij System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   bij System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bij LogicAndTrick.Oy.InMemoryMessageBus.<Publish>d__4`1.MoveNext()

It would also be nice if the line and column numbers could be printed when this error occurs to help locate fgd errors.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions