// from vshaxe package haxe.display; import haxe.display.Position.Location; import haxe.display.Position.Range; import haxe.display.JsonModuleTypes; enum abstract UnresolvedIdentifierSuggestion(Int) { var UISImport; var UISTypo; } enum abstract MissingFieldCauseKind(String) { final AbstractParent:MissingFieldCauseKind<{parent:JsonTypePathWithParams}>; final ImplementedInterface:MissingFieldCauseKind<{parent:JsonTypePathWithParams}>; final PropertyAccessor:MissingFieldCauseKind<{property:JsonClassField, isGetter:Bool}>; final FieldAccess:MissingFieldCauseKind<{}>; final FinalFields:MissingFieldCauseKind<{fields:Array}>; } typedef MissingFieldCause = { var kind:MissingFieldCauseKind; var args:T; } typedef MissingField = { var field:JsonClassField; var type:JsonType; /** When implementing multiple interfaces, there can be field duplicates among them. This flag is only true for the first such occurrence of a field, so that the "Implement all" code action doesn't end up implementing the same field multiple times. **/ var unique:Bool; } typedef MissingFieldDiagnostic = { var fields:Array; var cause:MissingFieldCause; } typedef MissingFieldDiagnostics = { var moduleType:JsonModuleType; var moduleFile:String; var entries:Array; } enum abstract DiagnosticKind(Int) from Int to Int { final DKUnusedImport:DiagnosticKind; final DKUnresolvedIdentifier:DiagnosticKind>; final DKCompilerError:DiagnosticKind; final DKRemovableCode:DiagnosticKind<{description:String, range:Range}>; final DKParserError:DiagnosticKind; final DeprecationWarning:DiagnosticKind; final InactiveBlock:DiagnosticKind; final MissingFields:DiagnosticKind; } enum abstract DiagnosticSeverity(Int) { var Error = 1; var Warning; var Information; var Hint; } typedef Diagnostic = { var kind:DiagnosticKind; var range:Range; var severity:DiagnosticSeverity; var args:T; var relatedInformation:Array; } typedef DiagnosticRelatedInformation = { var location:Location; var message:String; var depth:Int; }