diff --git a/External/Plugins/HaXeContext/Context.cs b/External/Plugins/HaXeContext/Context.cs index ea5ef16b00..74d99c0a5c 100644 --- a/External/Plugins/HaXeContext/Context.cs +++ b/External/Plugins/HaXeContext/Context.cs @@ -378,10 +378,35 @@ public void SetHaxeEnvironment(string sdkPath) LoadMetadata(); - features.SpecialPostfixOperators = GetCurrentSDKVersion() >= "3.3.0" + var version = GetCurrentSDKVersion(); + + features.SpecialPostfixOperators = version >= "3.3.0" ? new[] {'!'} : Array.Empty(); + if (version >= "4") + { + features.finalKey = "final"; + + if (Array.IndexOf(features.codeKeywords, "final") < 0) + { + Array.Resize(ref features.codeKeywords, features.codeKeywords.Length + 1); + features.codeKeywords[features.codeKeywords.Length - 1] = "final"; + } + + if (Array.IndexOf(features.declKeywords, "final") < 0) + { + Array.Resize(ref features.declKeywords, features.declKeywords.Length + 1); + features.declKeywords[features.declKeywords.Length - 1] = "final"; + } + } + else + { + features.finalKey = null; + features.codeKeywords = features.codeKeywords.Where(w => w != "final").ToArray(); + features.declKeywords = features.declKeywords.Where(w => w != "final").ToArray(); + } + UseGenericsShortNotationChange(); } @@ -2633,4 +2658,4 @@ public HaxeCompletionCache(IASContext context, MemberList elements, MemberList o OtherElements = otherElements; } } -} \ No newline at end of file +} diff --git a/External/Plugins/HaXeContext/Model/FileParser.cs b/External/Plugins/HaXeContext/Model/FileParser.cs index d1dc9b3be1..e69af4337c 100644 --- a/External/Plugins/HaXeContext/Model/FileParser.cs +++ b/External/Plugins/HaXeContext/Model/FileParser.cs @@ -1678,7 +1678,7 @@ bool EvalToken(bool evalContext, bool evalKeyword) if (dotIndex > 0) token = token.Substring(dotIndex + 1); // members - if (token == "var") + if (token == "var" || token == "final") { foundKeyword = FlagType.Variable; } diff --git a/FlashDevelop/Bin/Debug/Settings/Languages/Haxe.xml b/FlashDevelop/Bin/Debug/Settings/Languages/Haxe.xml index 3223b40840..058b421e74 100644 --- a/FlashDevelop/Bin/Debug/Settings/Languages/Haxe.xml +++ b/FlashDevelop/Bin/Debug/Settings/Languages/Haxe.xml @@ -3,7 +3,7 @@ abstract break case catch class continue default do else enum extends for in function if implements import - interface new package return switch throw try typedef using var while $type + interface new package return switch throw try typedef using var final while $type null true false