diff --git a/UIXC/Commands/DecompileCommand.cs b/UIXC/Commands/DecompileCommand.cs index c23bf94..a7a0818 100644 --- a/UIXC/Commands/DecompileCommand.cs +++ b/UIXC/Commands/DecompileCommand.cs @@ -65,7 +65,7 @@ public class DecompileCommand : CompilerCommandBase if (uibLoadResult.Status != LoadResultStatus.Success) throw new Exception($"Failed to load UIB source ({uibLoadResult.ErrorContextUri})"); - var disassembler = Disassembler.Load(uibLoadResult as MarkupLoadResult); + var disassembler = Disassembler.Load(uibLoadResult); var asm = disassembler.Write(); File.WriteAllText(GetOutputPath(settings, input), asm); diff --git a/libs/UIX.Asm/Disassembler.cs b/libs/UIX.Asm/Disassembler.cs index 5f21285..632458b 100644 --- a/libs/UIX.Asm/Disassembler.cs +++ b/libs/UIX.Asm/Disassembler.cs @@ -5,7 +5,6 @@ using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; -using System.Xml.Linq; namespace Microsoft.Iris.Asm; @@ -26,7 +25,13 @@ public class Disassembler }; } - public static Disassembler Load(MarkupLoadResult loadResult) => new(loadResult); + public static Disassembler Load(LoadResult loadResult) + { + if (loadResult is not MarkupLoadResult markupLoadResult) + throw new ArgumentException($"Disassembly can only be performed on markup. Expected '{nameof(MarkupLoadResult)}', got '{loadResult?.GetType().Name}'."); + + return new(markupLoadResult); + } public IEnumerable GetExports() { diff --git a/libs/UIX.Test/Assembly.cs b/libs/UIX.Test/Assembly.cs index 625a5b2..b26f331 100644 --- a/libs/UIX.Test/Assembly.cs +++ b/libs/UIX.Test/Assembly.cs @@ -97,7 +97,7 @@ Alt_locl: // Disassemble the compiled UIX var sourceLoadResult = MarkupSystem.ResolveLoadResult($"file://{uibFile.Path}", MarkupSystem.RootIslandId); - var disassembly = Disassembler.Load(sourceLoadResult as MarkupLoadResult); + var disassembly = Disassembler.Load(sourceLoadResult); var disassemblyText = disassembly.Write(); File.WriteAllText(uixaPath, disassemblyText); @@ -164,7 +164,7 @@ Alt_locl: // Disassemble the compiled UIX var sourceLoadResult = MarkupSystem.ResolveLoadResult($"file://{uixFile.Path}", MarkupSystem.RootIslandId); - var disassembly = Disassembler.Load(sourceLoadResult as MarkupLoadResult); + var disassembly = Disassembler.Load(sourceLoadResult); var disassemblyText = disassembly.Write(); File.WriteAllText(uixaPath, disassemblyText); @@ -217,7 +217,7 @@ Alt_locl: string uri = "file://" + tempFile.Path; var sourceLoadResult = MarkupSystem.ResolveLoadResult(uri, MarkupSystem.RootIslandId); - var dis = Disassembler.Load(sourceLoadResult as MarkupLoadResult); + var dis = Disassembler.Load(sourceLoadResult); var disText = dis.Write(); _output.WriteLine(disText);