Lots of improvements
This commit is contained in:
parent
c7b8ef3463
commit
d1c0a61bd1
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"comments": {
|
||||
"lineComment": "--"
|
||||
},
|
||||
"brackets": [["(", ")"], ["[", "]"], ["{", "}"]],
|
||||
"autoClosingPairs": [
|
||||
["(", ")"],
|
||||
["[", "]"],
|
||||
["{", "}"],
|
||||
{ "open": "'", "close": "'", "notIn": ["string", "comment"] },
|
||||
{ "open": "\"", "close": "\"", "notIn": ["string"] },
|
||||
{ "open": "`", "close": "`", "notIn": ["string", "comment"] },
|
||||
{ "open": "/**", "close": " */", "notIn": ["string"] }
|
||||
],
|
||||
"surroundingPairs": [
|
||||
["{", "}"],
|
||||
["[", "]"],
|
||||
["(", ")"],
|
||||
["'", "'"],
|
||||
["\"", "\""],
|
||||
["`", "`"]
|
||||
]
|
||||
}
|
|
@ -8,7 +8,7 @@ const path = require("path");
|
|||
const fs = require("fs");
|
||||
// Defines the search path of your language server DLL. (.NET Core)
|
||||
const languageServerPaths = [
|
||||
"server/DemoLanguageServer.dll",
|
||||
"./server/UpsilonLanguageServer.dll",
|
||||
"../UpsilonLanguageServer/UpsilonLanguageServer/bin/Debug/netcoreapp2.1/UpsilonLanguageServer.dll"
|
||||
];
|
||||
function activateLanguageServer(context) {
|
||||
|
@ -55,9 +55,9 @@ function activateLanguageServer(context) {
|
|||
configurationSection: "upsilonLanguageServer",
|
||||
// Notify the server about file changes to '.clientrc files contain in the workspace
|
||||
fileEvents: [
|
||||
vscode.workspace.createFileSystemWatcher("**/.clientrc"),
|
||||
vscode.workspace.createFileSystemWatcher("**/.yup"),
|
||||
vscode.workspace.createFileSystemWatcher("**/.lua"),
|
||||
vscode.workspace.createFileSystemWatcher("**/*.clientrc"),
|
||||
vscode.workspace.createFileSystemWatcher("**/*.yup"),
|
||||
vscode.workspace.createFileSystemWatcher("**/*.lua"),
|
||||
vscode.workspace.createFileSystemWatcher("**/.upsilon/*.json")
|
||||
]
|
||||
}
|
||||
|
|
|
@ -1 +1 @@
|
|||
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,6DAA6D;AAC7D,8EAA8E;AAE9E,iCAAiC;AACjC,wDAAwD;AACxD,6BAA6B;AAC7B,yBAAyB;AAEzB,mEAAmE;AACnE,MAAM,mBAAmB,GAAG;IAC1B,+BAA+B;IAC/B,kGAAkG;CACnG,CAAC;AAEF,SAAS,sBAAsB,CAAC,OAAgC;IAC9D,0DAA0D;IAC1D,IAAI,YAAY,GAAW,IAAI,CAAC;IAChC,KAAK,IAAI,CAAC,IAAI,mBAAmB,EAAE;QACjC,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QAC9B,kBAAkB;QAClB,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;YACpB,YAAY,GAAG,CAAC,CAAC;YACjB,MAAM;SACP;KACF;IACD,IAAI,CAAC,YAAY;QACf,MAAM,IAAI,QAAQ,CAAC,yCAAyC,CAAC,CAAC;IAChE,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,OAAO,YAAY,oBAAoB,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,cAAc,QAAQ,GAAG,CAAC,CAAC;IAEvC,oFAAoF;IACpF,qCAAqC;IACrC,IAAI,aAAa,GAAiC;QAChD,GAAG,EAAE;YACH,OAAO,EAAE,QAAQ;YACjB,IAAI,EAAE,CAAC,YAAY,CAAC;YACpB,OAAO,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE;SAC3B;QACD,KAAK,EAAE;YACL,OAAO,EAAE,QAAQ;YACjB,IAAI,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC;YAC/B,OAAO,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE;SAC3B;KACF,CAAC;IACF,yCAAyC;IACzC,IAAI,aAAa,GAAyC;QACxD,+CAA+C;QAC/C,gBAAgB,EAAE;YAChB;gBACE,QAAQ,EAAE,SAAS;gBACnB,MAAM,EAAE,MAAM;aACf;SACF;QACD,WAAW,EAAE;YACX,wEAAwE;YACxE,oBAAoB,EAAE,uBAAuB;YAC7C,oFAAoF;YACpF,UAAU,EAAE;gBACV,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC,cAAc,CAAC;gBACxD,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC,SAAS,CAAC;gBACnD,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC,SAAS,CAAC;gBACnD,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC,oBAAoB,CAAC;aAC/D;SACF;KACF,CAAC;IAEF,mDAAmD;IACnD,IAAI,MAAM,GAAG,IAAI,cAAc,CAAC,cAAc,CAC5C,uBAAuB,EACvB,yBAAyB,EACzB,aAAa,EACb,aAAa,CACd,CAAC;IACF,IAAI,UAAU,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;IAEhC,iEAAiE;IACjE,sDAAsD;IACtD,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACzC,CAAC;AAED,yDAAyD;AACzD,0EAA0E;AAC1E,SAAgB,QAAQ,CAAC,OAAgC;IACvD,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IACnD,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAClC,CAAC;AAHD,4BAGC;AAED,2DAA2D;AAC3D,SAAgB,UAAU,KAAI,CAAC;AAA/B,gCAA+B"}
|
||||
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,6DAA6D;AAC7D,8EAA8E;AAE9E,iCAAiC;AACjC,wDAAwD;AACxD,6BAA6B;AAC7B,yBAAyB;AAEzB,mEAAmE;AACnE,MAAM,mBAAmB,GAAG;IAC1B,oCAAoC;IACpC,kGAAkG;CACnG,CAAC;AAEF,SAAS,sBAAsB,CAAC,OAAgC;IAC9D,0DAA0D;IAC1D,IAAI,YAAY,GAAW,IAAI,CAAC;IAChC,KAAK,IAAI,CAAC,IAAI,mBAAmB,EAAE;QACjC,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QAC9B,kBAAkB;QAClB,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;YACpB,YAAY,GAAG,CAAC,CAAC;YACjB,MAAM;SACP;KACF;IACD,IAAI,CAAC,YAAY;QACf,MAAM,IAAI,QAAQ,CAAC,yCAAyC,CAAC,CAAC;IAChE,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,OAAO,YAAY,oBAAoB,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,cAAc,QAAQ,GAAG,CAAC,CAAC;IAEvC,oFAAoF;IACpF,qCAAqC;IACrC,IAAI,aAAa,GAAiC;QAChD,GAAG,EAAE;YACH,OAAO,EAAE,QAAQ;YACjB,IAAI,EAAE,CAAC,YAAY,CAAC;YACpB,OAAO,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE;SAC3B;QACD,KAAK,EAAE;YACL,OAAO,EAAE,QAAQ;YACjB,IAAI,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC;YAC/B,OAAO,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE;SAC3B;KACF,CAAC;IACF,yCAAyC;IACzC,IAAI,aAAa,GAAyC;QACxD,+CAA+C;QAC/C,gBAAgB,EAAE;YAChB;gBACE,QAAQ,EAAE,SAAS;gBACnB,MAAM,EAAE,MAAM;aACf;SACF;QACD,WAAW,EAAE;YACX,wEAAwE;YACxE,oBAAoB,EAAE,uBAAuB;YAC7C,oFAAoF;YACpF,UAAU,EAAE;gBACV,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC,eAAe,CAAC;gBACzD,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC,UAAU,CAAC;gBACpD,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC,UAAU,CAAC;gBACpD,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC,oBAAoB,CAAC;aAC/D;SACF;KACF,CAAC;IAEF,mDAAmD;IACnD,IAAI,MAAM,GAAG,IAAI,cAAc,CAAC,cAAc,CAC5C,uBAAuB,EACvB,yBAAyB,EACzB,aAAa,EACb,aAAa,CACd,CAAC;IACF,IAAI,UAAU,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;IAEhC,iEAAiE;IACjE,sDAAsD;IACtD,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACzC,CAAC;AAED,yDAAyD;AACzD,0EAA0E;AAC1E,SAAgB,QAAQ,CAAC,OAAgC;IACvD,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IACnD,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAClC,CAAC;AAHD,4BAGC;AAED,2DAA2D;AAC3D,SAAgB,UAAU,KAAI,CAAC;AAA/B,gCAA+B"}
|
|
@ -1,5 +1,6 @@
|
|||
{
|
||||
"name": "upsilon-language-extension",
|
||||
"publisher": "Deuk",
|
||||
"version": "1.0.0",
|
||||
"engines": {
|
||||
"vscode": "^1.29.1"
|
||||
|
@ -15,6 +16,7 @@
|
|||
"aliases": [
|
||||
"Upsilon"
|
||||
],
|
||||
"configuration": "./language-configuration.json",
|
||||
"extensions": [
|
||||
".yup",
|
||||
".lua"
|
||||
|
@ -30,23 +32,12 @@
|
|||
],
|
||||
"configuration": {
|
||||
"type": "object",
|
||||
"title": "Example configuration",
|
||||
"title": "Upsilon configuration",
|
||||
"properties": {
|
||||
"upsilonLanguageServer.maxNumberOfProblems": {
|
||||
"type": "number",
|
||||
"default": 100,
|
||||
"description": "Controls the maximum number of problems produced by the server."
|
||||
},
|
||||
"upsilonLanguageServer.trace.server": {
|
||||
"scope": "window",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"off",
|
||||
"messages",
|
||||
"verbose"
|
||||
],
|
||||
"default": "off",
|
||||
"description": "Traces the communication between VSCode and the upsilonLanguageServer service."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@ import * as fs from "fs";
|
|||
|
||||
// Defines the search path of your language server DLL. (.NET Core)
|
||||
const languageServerPaths = [
|
||||
"server/DemoLanguageServer.dll",
|
||||
"./server/UpsilonLanguageServer.dll",
|
||||
"../UpsilonLanguageServer/UpsilonLanguageServer/bin/Debug/netcoreapp2.1/UpsilonLanguageServer.dll"
|
||||
];
|
||||
|
||||
|
@ -58,9 +58,9 @@ function activateLanguageServer(context: vscode.ExtensionContext) {
|
|||
configurationSection: "upsilonLanguageServer",
|
||||
// Notify the server about file changes to '.clientrc files contain in the workspace
|
||||
fileEvents: [
|
||||
vscode.workspace.createFileSystemWatcher("**/.clientrc"),
|
||||
vscode.workspace.createFileSystemWatcher("**/.yup"),
|
||||
vscode.workspace.createFileSystemWatcher("**/.lua"),
|
||||
vscode.workspace.createFileSystemWatcher("**/*.clientrc"),
|
||||
vscode.workspace.createFileSystemWatcher("**/*.yup"),
|
||||
vscode.workspace.createFileSystemWatcher("**/*.lua"),
|
||||
vscode.workspace.createFileSystemWatcher("**/.upsilon/*.json")
|
||||
]
|
||||
}
|
||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,216 @@
|
|||
<?xml version="1.0" encoding="utf-8"?><doc>
|
||||
<assembly>
|
||||
<name>Microsoft.CSharp</name>
|
||||
</assembly>
|
||||
<members>
|
||||
<member name="T:Microsoft.CSharp.RuntimeBinder.RuntimeBinderException">
|
||||
<summary>Represents an error that occurs when a dynamic bind in the C# runtime binder is processed.</summary>
|
||||
</member>
|
||||
<member name="M:Microsoft.CSharp.RuntimeBinder.RuntimeBinderException.#ctor">
|
||||
<summary>Initializes a new instance of the <see cref="T:Microsoft.CSharp.RuntimeBinder.RuntimeBinderException"></see> class.</summary>
|
||||
</member>
|
||||
<member name="M:Microsoft.CSharp.RuntimeBinder.RuntimeBinderException.#ctor(System.String)">
|
||||
<summary>Initializes a new instance of the <see cref="T:Microsoft.CSharp.RuntimeBinder.RuntimeBinderException"></see> class that has a specified error message.</summary>
|
||||
<param name="message">The message that describes the exception. The caller of this constructor is required to ensure that this string has been localized for the current system culture.</param>
|
||||
</member>
|
||||
<member name="M:Microsoft.CSharp.RuntimeBinder.RuntimeBinderException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
|
||||
<summary>Initializes a new instance of the <see cref="T:Microsoft.CSharp.RuntimeBinder.RuntimeBinderException"></see> class that has serialized data.</summary>
|
||||
<param name="info">The object that holds the serialized object data about the exception being thrown..</param>
|
||||
<param name="context">The contextual information about the source or destination.</param>
|
||||
</member>
|
||||
<member name="M:Microsoft.CSharp.RuntimeBinder.RuntimeBinderException.#ctor(System.String,System.Exception)">
|
||||
<summary>Initializes a new instance of the <see cref="T:Microsoft.CSharp.RuntimeBinder.RuntimeBinderException"></see> class that has a specified error message and a reference to the inner exception that is the cause of this exception.</summary>
|
||||
<param name="message">The error message that explains the reason for the exception.</param>
|
||||
<param name="innerException">The exception that is the cause of the current exception, or a null reference if no inner exception is specified.</param>
|
||||
</member>
|
||||
<member name="T:Microsoft.CSharp.RuntimeBinder.RuntimeBinderInternalCompilerException">
|
||||
<summary>Represents an error that occurs when a dynamic bind in the C# runtime binder is processed.</summary>
|
||||
</member>
|
||||
<member name="M:Microsoft.CSharp.RuntimeBinder.RuntimeBinderInternalCompilerException.#ctor">
|
||||
<summary>Initializes a new instance of the <see cref="T:Microsoft.CSharp.RuntimeBinder.RuntimeBinderInternalCompilerException"></see> class with a system-supplied message that describes the error.</summary>
|
||||
</member>
|
||||
<member name="M:Microsoft.CSharp.RuntimeBinder.RuntimeBinderInternalCompilerException.#ctor(System.String)">
|
||||
<summary>Initializes a new instance of the <see cref="T:Microsoft.CSharp.RuntimeBinder.RuntimeBinderInternalCompilerException"></see> class with a specified message that describes the error.</summary>
|
||||
<param name="message">The message that describes the exception. The caller of this constructor is required to ensure that this string has been localized for the current system culture.</param>
|
||||
</member>
|
||||
<member name="M:Microsoft.CSharp.RuntimeBinder.RuntimeBinderInternalCompilerException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
|
||||
<summary>Initializes a new instance of the <see cref="T:Microsoft.CSharp.RuntimeBinder.RuntimeBinderInternalCompilerException"></see> class with serialized data.</summary>
|
||||
<param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"></see> that holds the serialized object data about the exception being thrown.</param>
|
||||
<param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"></see> that contains contextual information about the source or destination.</param>
|
||||
</member>
|
||||
<member name="M:Microsoft.CSharp.RuntimeBinder.RuntimeBinderInternalCompilerException.#ctor(System.String,System.Exception)">
|
||||
<summary>Initializes a new instance of the <see cref="T:Microsoft.CSharp.RuntimeBinder.RuntimeBinderInternalCompilerException"></see> class that has a specified error message and a reference to the inner exception that is the cause of this exception.</summary>
|
||||
<param name="message">The error message that explains the reason for the exception.</param>
|
||||
<param name="innerException">The exception that is the cause of the current exception, or a null reference if no inner exception is specified.</param>
|
||||
</member>
|
||||
<member name="T:Microsoft.CSharp.RuntimeBinder.Binder">
|
||||
<summary>Contains factory methods to create dynamic call site binders for CSharp.</summary>
|
||||
</member>
|
||||
<member name="M:Microsoft.CSharp.RuntimeBinder.Binder.BinaryOperation(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Linq.Expressions.ExpressionType,System.Type,System.Collections.Generic.IEnumerable{Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo})">
|
||||
<summary>Initializes a new CSharp binary operation binder.</summary>
|
||||
<param name="flags">The flags with which to initialize the binder.</param>
|
||||
<param name="operation">The binary operation kind.</param>
|
||||
<param name="context">The <see cref="T:System.Type"></see> that indicates where this operation is used.</param>
|
||||
<param name="argumentInfo">The sequence of <see cref="T:Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo"></see> instances for the arguments to this operation.</param>
|
||||
<returns>Returns a new CSharp binary operation binder.</returns>
|
||||
</member>
|
||||
<member name="M:Microsoft.CSharp.RuntimeBinder.Binder.Convert(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Type,System.Type)">
|
||||
<summary>Initializes a new CSharp convert binder.</summary>
|
||||
<param name="flags">The flags with which to initialize the binder.</param>
|
||||
<param name="type">The type to convert to.</param>
|
||||
<param name="context">The <see cref="T:System.Type"></see> that indicates where this operation is used.</param>
|
||||
<returns>Returns a new CSharp convert binder.</returns>
|
||||
</member>
|
||||
<member name="M:Microsoft.CSharp.RuntimeBinder.Binder.GetIndex(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Type,System.Collections.Generic.IEnumerable{Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo})">
|
||||
<summary>Initializes a new CSharp get index binder.</summary>
|
||||
<param name="flags">The flags with which to initialize the binder.</param>
|
||||
<param name="context">The <see cref="T:System.Type"></see> that indicates where this operation is used.</param>
|
||||
<param name="argumentInfo">The sequence of <see cref="T:Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo"></see> instances for the arguments to this operation.</param>
|
||||
<returns>Returns a new CSharp get index binder.</returns>
|
||||
</member>
|
||||
<member name="M:Microsoft.CSharp.RuntimeBinder.Binder.GetMember(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.String,System.Type,System.Collections.Generic.IEnumerable{Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo})">
|
||||
<summary>Initializes a new CSharp get member binder.</summary>
|
||||
<param name="flags">The flags with which to initialize the binder.</param>
|
||||
<param name="name">The name of the member to get.</param>
|
||||
<param name="context">The <see cref="T:System.Type"></see> that indicates where this operation is used.</param>
|
||||
<param name="argumentInfo">The sequence of <see cref="T:Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo"></see> instances for the arguments to this operation.</param>
|
||||
<returns>Returns a new CSharp get member binder.</returns>
|
||||
</member>
|
||||
<member name="M:Microsoft.CSharp.RuntimeBinder.Binder.Invoke(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Type,System.Collections.Generic.IEnumerable{Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo})">
|
||||
<summary>Initializes a new CSharp invoke binder.</summary>
|
||||
<param name="flags">The flags with which to initialize the binder.</param>
|
||||
<param name="context">The <see cref="T:System.Type"></see> that indicates where this operation is used.</param>
|
||||
<param name="argumentInfo">The sequence of <see cref="T:Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo"></see> instances for the arguments to this operation.</param>
|
||||
<returns>Returns a new CSharp invoke binder.</returns>
|
||||
</member>
|
||||
<member name="M:Microsoft.CSharp.RuntimeBinder.Binder.InvokeConstructor(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Type,System.Collections.Generic.IEnumerable{Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo})">
|
||||
<summary>Initializes a new CSharp invoke constructor binder.</summary>
|
||||
<param name="flags">The flags with which to initialize the binder.</param>
|
||||
<param name="context">The <see cref="T:System.Type"></see> that indicates where this operation is used.</param>
|
||||
<param name="argumentInfo">The sequence of <see cref="T:Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo"></see> instances for the arguments to this operation.</param>
|
||||
<returns>Returns a new CSharp invoke constructor binder.</returns>
|
||||
</member>
|
||||
<member name="M:Microsoft.CSharp.RuntimeBinder.Binder.InvokeMember(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.String,System.Collections.Generic.IEnumerable{System.Type},System.Type,System.Collections.Generic.IEnumerable{Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo})">
|
||||
<summary>Initializes a new CSharp invoke member binder.</summary>
|
||||
<param name="flags">The flags with which to initialize the binder.</param>
|
||||
<param name="name">The name of the member to invoke.</param>
|
||||
<param name="typeArguments">The list of type arguments specified for this invoke.</param>
|
||||
<param name="context">The <see cref="T:System.Type"></see> that indicates where this operation is used.</param>
|
||||
<param name="argumentInfo">The sequence of <see cref="T:Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo"></see> instances for the arguments to this operation.</param>
|
||||
<returns>Returns a new CSharp invoke member binder.</returns>
|
||||
</member>
|
||||
<member name="M:Microsoft.CSharp.RuntimeBinder.Binder.IsEvent(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.String,System.Type)">
|
||||
<summary>Initializes a new CSharp is event binder.</summary>
|
||||
<param name="flags">The flags with which to initialize the binder.</param>
|
||||
<param name="name">The name of the event to look for.</param>
|
||||
<param name="context">The <see cref="T:System.Type"></see> that indicates where this operation is used.</param>
|
||||
<returns>Returns a new CSharp is event binder.</returns>
|
||||
</member>
|
||||
<member name="M:Microsoft.CSharp.RuntimeBinder.Binder.SetIndex(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Type,System.Collections.Generic.IEnumerable{Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo})">
|
||||
<summary>Initializes a new CSharp set index binder.</summary>
|
||||
<param name="flags">The flags with which to initialize the binder.</param>
|
||||
<param name="context">The <see cref="T:System.Type"></see> that indicates where this operation is used.</param>
|
||||
<param name="argumentInfo">The sequence of <see cref="T:Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo"></see> instances for the arguments to this operation.</param>
|
||||
<returns>Returns a new CSharp set index binder.</returns>
|
||||
</member>
|
||||
<member name="M:Microsoft.CSharp.RuntimeBinder.Binder.SetMember(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.String,System.Type,System.Collections.Generic.IEnumerable{Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo})">
|
||||
<summary>Initializes a new CSharp set member binder.</summary>
|
||||
<param name="flags">The flags with which to initialize the binder.</param>
|
||||
<param name="name">The name of the member to set.</param>
|
||||
<param name="context">The <see cref="T:System.Type"></see> that indicates where this operation is used.</param>
|
||||
<param name="argumentInfo">The sequence of <see cref="T:Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo"></see> instances for the arguments to this operation.</param>
|
||||
<returns>Returns a new CSharp set member binder.</returns>
|
||||
</member>
|
||||
<member name="M:Microsoft.CSharp.RuntimeBinder.Binder.UnaryOperation(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags,System.Linq.Expressions.ExpressionType,System.Type,System.Collections.Generic.IEnumerable{Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo})">
|
||||
<summary>Initializes a new CSharp unary operation binder.</summary>
|
||||
<param name="flags">The flags with which to initialize the binder.</param>
|
||||
<param name="operation">The unary operation kind.</param>
|
||||
<param name="context">The <see cref="T:System.Type"></see> that indicates where this operation is used.</param>
|
||||
<param name="argumentInfo">The sequence of <see cref="T:Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo"></see> instances for the arguments to this operation.</param>
|
||||
<returns>Returns a new CSharp unary operation binder.</returns>
|
||||
</member>
|
||||
<member name="T:Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo">
|
||||
<summary>Represents information about C# dynamic operations that are specific to particular arguments at a call site. Instances of this class are generated by the C# compiler.</summary>
|
||||
</member>
|
||||
<member name="M:Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo.Create(Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfoFlags,System.String)">
|
||||
<summary>Initializes a new instance of the <see cref="T:Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo"></see> class.</summary>
|
||||
<param name="flags">The flags for the argument.</param>
|
||||
<param name="name">The name of the argument, if named; otherwise null.</param>
|
||||
<returns>A new instance of the <see cref="Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo"></see> class.</returns>
|
||||
</member>
|
||||
<member name="T:Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfoFlags">
|
||||
<summary>Represents information about C# dynamic operations that are specific to particular arguments at a call site. Instances of this class are generated by the C# compiler.</summary>
|
||||
</member>
|
||||
<member name="F:Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfoFlags.Constant">
|
||||
<summary>The argument is a constant.</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="F:Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfoFlags.IsOut">
|
||||
<summary>The argument is passed to an out parameter.</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="F:Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfoFlags.IsRef">
|
||||
<summary>The argument is passed to a ref parameter.</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="F:Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfoFlags.IsStaticType">
|
||||
<summary>The argument is a <see cref="T:System.Type"></see> indicating an actual type name used in source. Used only for target objects in static calls.</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="F:Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfoFlags.NamedArgument">
|
||||
<summary>The argument is a named argument.</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="F:Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfoFlags.None">
|
||||
<summary>No additional information to represent.</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="F:Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfoFlags.UseCompileTimeType">
|
||||
<summary>The argument&#39;s compile-time type should be considered during binding.</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="T:Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags">
|
||||
<summary>Represents information about C# dynamic operations that are not specific to particular arguments at a call site. Instances of this class are generated by the C# compiler.</summary>
|
||||
</member>
|
||||
<member name="F:Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags.BinaryOperationLogical">
|
||||
<summary>The binder represents a logical AND or logical OR that is part of a conditional logical operator evaluation.</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="F:Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags.CheckedContext">
|
||||
<summary>The evaluation of this binder happens in a checked context.</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="F:Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags.ConvertArrayIndex">
|
||||
<summary>The binder represents an implicit conversion for use in an array creation expression.</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="F:Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags.ConvertExplicit">
|
||||
<summary>The binder represents an explicit conversion.</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="F:Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags.InvokeSimpleName">
|
||||
<summary>The binder represents an invoke on a simple name.</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="F:Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags.InvokeSpecialName">
|
||||
<summary>The binder represents an invoke on a specialname.</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="F:Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags.None">
|
||||
<summary>There is no additional information required for this binder.</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="F:Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags.ResultDiscarded">
|
||||
<summary>The binder is used in a position that does not require a result, and can therefore bind to a void returning method.</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="F:Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags.ResultIndexed">
|
||||
<summary>The result of any bind is going to be indexed get a set index or get index binder.</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="F:Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags.ValueFromCompoundAssignment">
|
||||
<summary>The value in this set index or set member comes a compound assignment operator.</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
</members>
|
||||
</doc>
|
|
@ -10,7 +10,8 @@
|
|||
"Upsilon/1.0.0": {
|
||||
"dependencies": {
|
||||
"NETStandard.Library": "2.0.3",
|
||||
"System.Collections.Immutable": "1.5.0"
|
||||
"System.Collections.Immutable": "1.5.0",
|
||||
"Microsoft.CSharp": "4.0.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"Upsilon.dll": {}
|
||||
|
@ -29,6 +30,14 @@
|
|||
"fileVersion": "4.6.26515.6"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.CSharp/4.0.0.0": {
|
||||
"runtime": {
|
||||
"Microsoft.CSharp.dll": {
|
||||
"assemblyVersion": "4.0.0.0",
|
||||
"fileVersion": "4.6.26515.6"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -58,6 +67,11 @@
|
|||
"sha512": "sha512-RGxi2aQoXgZ5ge0zxrKqI4PU9LrYYoLC+cnEnWXKsSduCOUhE1GEAAoTexUVT8RZOILQyy1B27HC8Xw/XLGzdQ==",
|
||||
"path": "system.collections.immutable/1.5.0",
|
||||
"hashPath": "system.collections.immutable.1.5.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.CSharp/4.0.0.0": {
|
||||
"type": "reference",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
}
|
||||
}
|
||||
}
|
Binary file not shown.
Binary file not shown.
|
@ -1,8 +1,9 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using Upsilon.Binder.VariableSymbols;
|
||||
using Upsilon.BoundTypes;
|
||||
using Upsilon.StandardLibraries;
|
||||
using Type = Upsilon.BaseTypes.Type;
|
||||
|
||||
namespace UpsilonLanguageServer
|
||||
|
@ -24,18 +25,123 @@ namespace UpsilonLanguageServer
|
|||
var value = (JObject)innerProperty.Value;
|
||||
var type = value.GetValue("type", StringComparison.InvariantCultureIgnoreCase)?.ToString();
|
||||
var comment = value.GetValue("comment", StringComparison.InvariantCultureIgnoreCase)?.ToString();
|
||||
dic.Add(propertyName, new UserDataBoundProperty()
|
||||
if (string.Equals("function", type, StringComparison.InvariantCultureIgnoreCase))
|
||||
{
|
||||
Name = propertyName,
|
||||
ActualType = type,
|
||||
Comment = comment,
|
||||
Type = ParseType(type)
|
||||
});
|
||||
ParseMethod(value, dic, propertyName, type, comment);
|
||||
}
|
||||
else
|
||||
{
|
||||
dic.Add(propertyName.ToLowerInvariant(), new UserDataBoundProperty()
|
||||
{
|
||||
Name = propertyName,
|
||||
ActualType = type,
|
||||
Comment = comment,
|
||||
Type = ParseType(type)
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
BoundTypeHandler.LoadUserDataTypeDefinition(new UserDataBoundTypeDefinition(typeName, dic));
|
||||
}
|
||||
}
|
||||
|
||||
private static void ParseMethod(JObject value, IDictionary<string, UserDataBoundProperty> dic, string propertyName, string type, string comment)
|
||||
{
|
||||
var returnType = value.GetValue("returns", StringComparison.InvariantCultureIgnoreCase)?.ToString();
|
||||
var parameters = new List<UserDataBoundFunctionParameter>();
|
||||
if (value.GetValue("Parameters", StringComparison.InvariantCultureIgnoreCase) is JObject parameterJson)
|
||||
{
|
||||
var properties = parameterJson.Properties();
|
||||
foreach (var property in properties)
|
||||
{
|
||||
var parameterName = property.Name;
|
||||
var parameterValue = (JObject) property.Value;
|
||||
var parType = parameterValue.GetValue("type", StringComparison.InvariantCultureIgnoreCase)
|
||||
?.ToString();
|
||||
var parComment = parameterValue.GetValue("comment", StringComparison.InvariantCultureIgnoreCase)
|
||||
?.ToString();
|
||||
var isOptional = parameterValue.GetValue("IsOptional", StringComparison.InvariantCultureIgnoreCase)
|
||||
?.ToObject<bool>();
|
||||
parameters.Add(new UserDataBoundFunctionParameter()
|
||||
{
|
||||
Name = parameterName,
|
||||
Type = ParseType(parType),
|
||||
Comment = parComment,
|
||||
IsOptional = isOptional.HasValue && isOptional.Value
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
dic.Add(propertyName.ToLowerInvariant(), new UserDataBoundMethod()
|
||||
{
|
||||
Name = propertyName,
|
||||
ActualType = type,
|
||||
Comment = comment,
|
||||
Type = ParseType(type),
|
||||
ResultType = ParseType(returnType),
|
||||
Parameters = parameters.ToArray()
|
||||
});
|
||||
}
|
||||
|
||||
public static void LoadStaticVariables(string fileContent)
|
||||
{
|
||||
StaticScope.BoundScope = StaticScope.CreateStandardLibrary().Item2;
|
||||
var json = JObject.Parse(fileContent);
|
||||
foreach (var property in json.Properties())
|
||||
{
|
||||
var name = property.Name;
|
||||
var obj = (JObject)property.Value;
|
||||
var stringType = obj.GetValue("type", StringComparison.InvariantCultureIgnoreCase).ToString().ToLowerInvariant();
|
||||
var comments = obj.GetValue("comment", StringComparison.InvariantCultureIgnoreCase)?.ToString()
|
||||
.Split('\n');
|
||||
var type = ParseType(stringType);
|
||||
if (type == Type.UserData)
|
||||
{
|
||||
var boundType = BoundTypeHandler.GetTypeDefinition(stringType);
|
||||
if (boundType != null)
|
||||
{
|
||||
StaticScope.BoundScope.AssignToNearest(new UserDataVariableSymbol(name, boundType){CommentValue = comments});
|
||||
}
|
||||
else
|
||||
{
|
||||
StaticScope.BoundScope.AssignToNearest(new UserDataVariableSymbol(name, Type.Unknown){CommentValue = comments});
|
||||
}
|
||||
}
|
||||
else if (type == Type.Function)
|
||||
{
|
||||
var returnType = obj.GetValue("returns", StringComparison.InvariantCultureIgnoreCase).ToString().ToLowerInvariant();
|
||||
var parameters = new List<InternalFunctionVariableSymbol.InternalFunctionParameter>();
|
||||
if (obj.GetValue("Parameters", StringComparison.InvariantCultureIgnoreCase) is JObject parameterJson)
|
||||
{
|
||||
var properties = parameterJson.Properties();
|
||||
foreach (var prop in properties)
|
||||
{
|
||||
var parameterValue = (JObject) prop.Value;
|
||||
var parType = parameterValue.GetValue("type", StringComparison.InvariantCultureIgnoreCase)
|
||||
?.ToString();
|
||||
var parsedType = ParseType(parType);
|
||||
var isOptional = parameterValue.GetValue("IsOptional", StringComparison.InvariantCultureIgnoreCase)
|
||||
?.ToObject<bool>();
|
||||
parameters.Add(new InternalFunctionVariableSymbol.InternalFunctionParameter(parsedType,
|
||||
isOptional.HasValue && isOptional.Value));
|
||||
}
|
||||
}
|
||||
var parsedReturnType = ParseType(returnType);
|
||||
StaticScope.BoundScope.AssignToNearest(new InternalFunctionVariableSymbol(name, false,
|
||||
parsedReturnType, parameters.ToArray())
|
||||
{
|
||||
CommentValue = comments
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
StaticScope.BoundScope.AssignToNearest(new VariableSymbol(property.Name,
|
||||
type, false)
|
||||
{
|
||||
CommentValue = comments
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static Type ParseType(string input)
|
||||
|
|
|
@ -39,7 +39,8 @@ namespace UpsilonLanguageServer
|
|||
private static readonly ScriptOptions Options = new ScriptOptions()
|
||||
{
|
||||
ThrowExceptionOnError = false,
|
||||
SaveDataComments = true
|
||||
SaveDataComments = true,
|
||||
|
||||
};
|
||||
|
||||
private static async Task RealLint(TextDocument document, int maxNumberOfProblems, SessionDocument session,
|
||||
|
|
|
@ -16,9 +16,9 @@ using Microsoft.Extensions.Logging.Debug;
|
|||
|
||||
namespace UpsilonLanguageServer
|
||||
{
|
||||
static class Program
|
||||
internal static class Program
|
||||
{
|
||||
static void Main(string[] args)
|
||||
private static void Main(string[] args)
|
||||
{
|
||||
var debugMode = args.Any(a => a.Equals("--debug", StringComparison.OrdinalIgnoreCase));
|
||||
#if WAIT_FOR_DEBUGGER
|
||||
|
|
|
@ -25,6 +25,11 @@ namespace UpsilonLanguageServer.Services
|
|||
{
|
||||
BoundTypeParser.LoadBoundTypes(File.ReadAllText(typesConfigFile));
|
||||
}
|
||||
var staticConfigFile = configPath + "/static.json";
|
||||
if (File.Exists(staticConfigFile))
|
||||
{
|
||||
BoundTypeParser.LoadStaticVariables(File.ReadAllText(staticConfigFile));
|
||||
}
|
||||
}
|
||||
return new InitializeResult(new ServerCapabilities
|
||||
{
|
||||
|
|
|
@ -8,6 +8,7 @@ using JsonRpc.Standard.Contracts;
|
|||
using LanguageServer.VsCode;
|
||||
using LanguageServer.VsCode.Contracts;
|
||||
using Upsilon.Binder;
|
||||
using Upsilon.Binder.VariableSymbols;
|
||||
using Upsilon.BoundTypes;
|
||||
using Upsilon.Utilities;
|
||||
using Type = Upsilon.BaseTypes.Type;
|
||||
|
@ -148,7 +149,7 @@ namespace UpsilonLanguageServer.Services
|
|||
if (node is BoundFullStopIndexExpression indexExpression)
|
||||
{
|
||||
var expression = indexExpression.Expression;
|
||||
var variableSymbol = ResolveVariable(expression);
|
||||
var variableSymbol = Binder.ResolveVariable(expression, null);
|
||||
var result = await GetListFromVariableSymbol(variableSymbol);
|
||||
if (result != null)
|
||||
{
|
||||
|
@ -166,7 +167,7 @@ namespace UpsilonLanguageServer.Services
|
|||
variables.Select(x =>
|
||||
{
|
||||
var (key, value) = x;
|
||||
return new CompletionItem(key,
|
||||
return new CompletionItem(value.Name,
|
||||
CompletionItemKind.Variable, value.Type.ToString(),
|
||||
x.Value.CommentValue == null
|
||||
? ""
|
||||
|
@ -179,7 +180,7 @@ namespace UpsilonLanguageServer.Services
|
|||
|
||||
private static async Task<CompletionList> GetListFromVariableSymbol(VariableSymbol variableSymbol)
|
||||
{
|
||||
if (variableSymbol is FunctionParameterSymbol parameterSymbol &&
|
||||
if (variableSymbol is UserDataVariableSymbol parameterSymbol &&
|
||||
parameterSymbol.BoundTypeDefinition is UserDataBoundTypeDefinition udBoundDef)
|
||||
{
|
||||
return new CompletionList(
|
||||
|
@ -206,34 +207,5 @@ namespace UpsilonLanguageServer.Services
|
|||
|
||||
return null;
|
||||
}
|
||||
|
||||
private VariableSymbol ResolveVariable(BoundExpression expression)
|
||||
{
|
||||
if (expression.Kind == BoundKind.VariableExpression)
|
||||
{
|
||||
var variableExpression = (BoundVariableExpression) expression;
|
||||
return variableExpression.Variable.VariableSymbol;
|
||||
}
|
||||
if (expression.Kind == BoundKind.BoundFullstopIndexExpression)
|
||||
{
|
||||
var fullStopIndexExpression = (BoundFullStopIndexExpression) expression;
|
||||
var indexerExpression = fullStopIndexExpression.Expression;
|
||||
var indexerVariable = ResolveVariable(indexerExpression);
|
||||
if (indexerVariable.Type == Type.Table)
|
||||
{
|
||||
return ((TableVariableSymbol)indexerVariable).Variables[fullStopIndexExpression.Index];
|
||||
}
|
||||
if (indexerVariable.Type == Type.UserData)
|
||||
{
|
||||
var bDefProperty = ((UserDataBoundTypeDefinition) ((FunctionParameterSymbol) indexerVariable)
|
||||
.BoundTypeDefinition).Properties[fullStopIndexExpression.Index];
|
||||
var boundDef = BoundTypeHandler.GetTypeDefinition(bDefProperty.ActualType);
|
||||
return new FunctionParameterSymbol(fullStopIndexExpression.Index, boundDef);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -51,7 +51,7 @@ namespace UpsilonLanguageServer.Services
|
|||
StringComparison.InvariantCultureIgnoreCase))
|
||||
{
|
||||
var name = Path.GetFileName(localPath);
|
||||
if (string.Equals(Path.GetFileName(localPath), "types.json",
|
||||
if (string.Equals(name, "types.json",
|
||||
StringComparison.InvariantCultureIgnoreCase))
|
||||
{
|
||||
if (change.Type == FileChangeType.Created || change.Type == FileChangeType.Changed)
|
||||
|
@ -64,6 +64,19 @@ namespace UpsilonLanguageServer.Services
|
|||
}
|
||||
}
|
||||
}
|
||||
else if (string.Equals(name, "static.json",
|
||||
StringComparison.InvariantCultureIgnoreCase))
|
||||
{
|
||||
if (change.Type == FileChangeType.Created || change.Type == FileChangeType.Changed)
|
||||
{
|
||||
BoundTypeParser.LoadStaticVariables(File.ReadAllText(localPath));
|
||||
foreach (var doc in Session.Documents.Values)
|
||||
{
|
||||
var diag = await DiagnosticProvider.LintDocument(doc.Document, doc, Session.Settings.MaxNumberOfProblems);
|
||||
await Client.Document.PublishDiagnostics(doc.Document.Uri, diag);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue