支持全局函数补全

This commit is contained in:
csh
2025-09-27 22:23:04 +08:00
parent aac12137cb
commit dc713e6893
220 changed files with 195514 additions and 195869 deletions
+1 -1
View File
@@ -188,7 +188,7 @@ void test_capabilities()
ip.workDoneToken = 123;
ip.processId = std::nullopt;
ip.clientInfo = InitializeParams::ClientInfo{"VSCode", "1.0.0"};
ip.rootPath = "456";
// ip.rootPath = "456";
ip.initializationOptions = "options";
ip.trace = TraceValueLiterals::Messages;
@@ -1,7 +1,8 @@
type ImageDimensions = class
property Width read width_;
property Width : array of string index 2 read width_;
end;
function MyFunc(a: string; b: array of string);
// type ImageDimensions = class
// property Width read width_;
// property Width : array of string index 2 read width_;
// end;
// <?tslx>
// <div class="element-data-container">
+31 -33
View File
@@ -49,6 +49,7 @@ const kPrec = {
kArray: 20,
};
const kSemicolon = ";";
module.exports = grammar({
@@ -117,34 +118,31 @@ module.exports = grammar({
seq(
kw("const"),
field("name", $.identifier),
optional($._type_annotation),
optional($._type_clause),
"=",
field("value", $.expression),
kSemicolon,
),
var_declaration: ($) =>
seq(kw("var"), $._variable_declaration, optional($._type_annotation)),
seq(kw("var"), $._variable_declaration, optional($._type_clause)),
static_declaration: ($) =>
seq(kw("static"), $._variable_declaration, optional($._type_annotation)),
seq(kw("static"), $._variable_declaration, optional($._type_clause)),
global_declaration: ($) =>
seq(kw("global"), $._variable_declaration, optional($._type_annotation)),
seq(kw("global"), $._variable_declaration, optional($._type_clause)),
_variable_declaration: ($) => sep1(field("name", $.identifier), ","),
_type_annotation: ($) => seq(":", $.type_specification),
_type_clause: ($) => seq(":", field("type_name", $.type_name)),
type_specification: ($) =>
field(
"type",
token(
choice(
// array of xxx
seq("array", /\s+/, "of", /\s+/, /[_a-zA-Z][_a-zA-Z0-9_.]*/),
/[_a-zA-Z][_a-zA-Z0-9_.]*/,
),
type_name: (_) =>
token(
choice(
// array of xxx
seq("array", /\s+/, "of", /\s+/, /[_a-zA-Z][_a-zA-Z0-9_.]*/),
/[_a-zA-Z][_a-zA-Z0-9_.]*/,
),
),
@@ -590,7 +588,7 @@ module.exports = grammar({
seq(
kw("function"),
$._parameter_signature,
field("return_type", optional($._type_annotation)),
field("return_type", optional($._type_clause)),
optional(kSemicolon),
field("body", $.block_statement),
),
@@ -599,8 +597,8 @@ module.exports = grammar({
_unpack_vars: ($) =>
seq(
field("variable", $.identifier),
repeat1(seq(",", field("variable", $.identifier))),
field("name", $.identifier),
repeat1(seq(",", field("name", $.identifier))),
),
_left_hand_side: ($) =>
@@ -1093,7 +1091,7 @@ module.exports = grammar({
case_branch: ($) =>
seq(
field("values", $.case_values),
$.case_values,
":",
field("consequence", $._statement_suite),
),
@@ -1105,9 +1103,9 @@ module.exports = grammar({
try_statement: ($) =>
seq(
kw("try"),
optional(field("body", repeat1($._statement))),
optional(field("try_body", repeat1($._statement))),
kw("except"),
optional(field("body", repeat1($._statement))),
optional(field("except_body", repeat1($._statement))),
kw("end"),
optional(kSemicolon),
),
@@ -1120,7 +1118,7 @@ module.exports = grammar({
kw("function"),
field("name", $.identifier),
$._parameter_signature,
optional(field("return_type", $._type_annotation)),
optional(field("return_type", $._type_clause)),
kSemicolon,
),
@@ -1129,7 +1127,7 @@ module.exports = grammar({
kw("function"),
field("name", $.identifier),
$._parameter_signature,
field("return_type", optional($._type_annotation)),
field("return_type", optional($._type_clause)),
optional(kSemicolon),
field("body", $.block_statement),
optional(kSemicolon),
@@ -1142,9 +1140,9 @@ module.exports = grammar({
parameter: ($) =>
seq(
optional(choice(field("var", kw("var")), field("out", kw("out")))),
optional(choice(kw("var"), kw("out"))),
sep1(field("name", $.identifier), ","),
optional(field("type", $._type_annotation)),
optional(field("type", $._type_clause)),
optional(seq("=", field("default", $.expression))),
),
@@ -1199,7 +1197,7 @@ module.exports = grammar({
choice($.static_declaration, $.nostatic_declaration),
nostatic_declaration: ($) =>
seq($._variable_declaration, optional($._type_annotation)),
seq($._variable_declaration, optional($._type_clause)),
method_declaration: ($) =>
choice(
@@ -1214,7 +1212,7 @@ module.exports = grammar({
kw("function"),
field("name", $.method_name),
$._parameter_signature,
optional(field("return_type", $._type_annotation)),
optional(field("return_type", $._type_clause)),
kSemicolon,
),
@@ -1223,7 +1221,7 @@ module.exports = grammar({
kw("function"),
field("name", $.method_name),
$._parameter_signature,
optional(field("return_type", $._type_annotation)),
optional(field("return_type", $._type_clause)),
kSemicolon,
field("modifier", $.method_modifier),
kSemicolon,
@@ -1236,7 +1234,7 @@ module.exports = grammar({
kw("function"),
field("name", $.method_name),
$._parameter_signature,
optional(field("return_type", $._type_annotation)),
optional(field("return_type", $._type_clause)),
optional(kSemicolon),
field("body", $.block_statement),
optional(kSemicolon),
@@ -1261,7 +1259,7 @@ module.exports = grammar({
seq(
kw("property"),
field("name", $.identifier),
optional($._type_annotation),
optional($._type_clause),
optional($._property_index),
field("accessors", $.property_accessors),
kSemicolon,
@@ -1357,7 +1355,7 @@ module.exports = grammar({
kw("function"),
$._qualified_method_name,
$._parameter_signature,
optional(field("return_type", $._type_annotation)),
optional(field("return_type", $._type_clause)),
kSemicolon,
field("modifier", $.method_modifier),
kSemicolon,
@@ -1374,7 +1372,7 @@ module.exports = grammar({
kw("function"),
$._qualified_method_name,
$._parameter_signature,
optional(field("return_type", $._type_annotation)),
optional(field("return_type", $._type_clause)),
optional(kSemicolon),
field("body", $.block_statement),
optional(kSemicolon),
@@ -1388,7 +1386,7 @@ module.exports = grammar({
".",
field("operator", $._overloadable_operator),
$._parameter_signature,
optional(field("return_type", $._type_annotation)),
optional(field("return_type", $._type_clause)),
optional(kSemicolon),
field("body", $.block_statement),
optional(kSemicolon),
@@ -1402,7 +1400,7 @@ module.exports = grammar({
".",
field("operator", $._overloadable_operator),
$._parameter_signature,
optional(field("return_type", $._type_annotation)),
optional(field("return_type", $._type_clause)),
kSemicolon,
field("modifier", $.method_modifier),
kSemicolon,
+76 -88
View File
@@ -202,7 +202,7 @@
"members": [
{
"type": "SYMBOL",
"name": "_type_annotation"
"name": "_type_clause"
},
{
"type": "BLANK"
@@ -248,7 +248,7 @@
"members": [
{
"type": "SYMBOL",
"name": "_type_annotation"
"name": "_type_clause"
},
{
"type": "BLANK"
@@ -278,7 +278,7 @@
"members": [
{
"type": "SYMBOL",
"name": "_type_annotation"
"name": "_type_clause"
},
{
"type": "BLANK"
@@ -308,7 +308,7 @@
"members": [
{
"type": "SYMBOL",
"name": "_type_annotation"
"name": "_type_clause"
},
{
"type": "BLANK"
@@ -350,7 +350,7 @@
}
]
},
"_type_annotation": {
"_type_clause": {
"type": "SEQ",
"members": [
{
@@ -358,50 +358,50 @@
"value": ":"
},
{
"type": "SYMBOL",
"name": "type_specification"
"type": "FIELD",
"name": "type_name",
"content": {
"type": "SYMBOL",
"name": "type_name"
}
}
]
},
"type_specification": {
"type": "FIELD",
"name": "type",
"type_name": {
"type": "TOKEN",
"content": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "array"
},
{
"type": "PATTERN",
"value": "\\s+"
},
{
"type": "STRING",
"value": "of"
},
{
"type": "PATTERN",
"value": "\\s+"
},
{
"type": "PATTERN",
"value": "[_a-zA-Z][_a-zA-Z0-9_.]*"
}
]
},
{
"type": "PATTERN",
"value": "[_a-zA-Z][_a-zA-Z0-9_.]*"
}
]
}
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "array"
},
{
"type": "PATTERN",
"value": "\\s+"
},
{
"type": "STRING",
"value": "of"
},
{
"type": "PATTERN",
"value": "\\s+"
},
{
"type": "PATTERN",
"value": "[_a-zA-Z][_a-zA-Z0-9_.]*"
}
]
},
{
"type": "PATTERN",
"value": "[_a-zA-Z][_a-zA-Z0-9_.]*"
}
]
}
},
"assignment_statement": {
@@ -2318,7 +2318,7 @@
"members": [
{
"type": "SYMBOL",
"name": "_type_annotation"
"name": "_type_clause"
},
{
"type": "BLANK"
@@ -2374,7 +2374,7 @@
"members": [
{
"type": "FIELD",
"name": "variable",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
@@ -2391,7 +2391,7 @@
},
{
"type": "FIELD",
"name": "variable",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
@@ -5395,12 +5395,8 @@
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "values",
"content": {
"type": "SYMBOL",
"name": "case_values"
}
"type": "SYMBOL",
"name": "case_values"
},
{
"type": "STRING",
@@ -5488,7 +5484,7 @@
"members": [
{
"type": "FIELD",
"name": "body",
"name": "try_body",
"content": {
"type": "REPEAT1",
"content": {
@@ -5516,7 +5512,7 @@
"members": [
{
"type": "FIELD",
"name": "body",
"name": "except_body",
"content": {
"type": "REPEAT1",
"content": {
@@ -5606,7 +5602,7 @@
"name": "return_type",
"content": {
"type": "SYMBOL",
"name": "_type_annotation"
"name": "_type_clause"
}
},
{
@@ -5652,7 +5648,7 @@
"members": [
{
"type": "SYMBOL",
"name": "_type_annotation"
"name": "_type_clause"
},
{
"type": "BLANK"
@@ -5758,30 +5754,22 @@
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "var",
"type": "ALIAS",
"content": {
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "(?i)var"
},
"named": false,
"value": "var"
}
"type": "PATTERN",
"value": "(?i)var"
},
"named": false,
"value": "var"
},
{
"type": "FIELD",
"name": "out",
"type": "ALIAS",
"content": {
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "(?i)out"
},
"named": false,
"value": "out"
}
"type": "PATTERN",
"value": "(?i)out"
},
"named": false,
"value": "out"
}
]
},
@@ -5831,7 +5819,7 @@
"name": "type",
"content": {
"type": "SYMBOL",
"name": "_type_annotation"
"name": "_type_clause"
}
},
{
@@ -6183,7 +6171,7 @@
"members": [
{
"type": "SYMBOL",
"name": "_type_annotation"
"name": "_type_clause"
},
{
"type": "BLANK"
@@ -6253,7 +6241,7 @@
"name": "return_type",
"content": {
"type": "SYMBOL",
"name": "_type_annotation"
"name": "_type_clause"
}
},
{
@@ -6299,7 +6287,7 @@
"name": "return_type",
"content": {
"type": "SYMBOL",
"name": "_type_annotation"
"name": "_type_clause"
}
},
{
@@ -6402,7 +6390,7 @@
"name": "return_type",
"content": {
"type": "SYMBOL",
"name": "_type_annotation"
"name": "_type_clause"
}
},
{
@@ -6565,7 +6553,7 @@
"members": [
{
"type": "SYMBOL",
"name": "_type_annotation"
"name": "_type_clause"
},
{
"type": "BLANK"
@@ -7131,7 +7119,7 @@
"name": "return_type",
"content": {
"type": "SYMBOL",
"name": "_type_annotation"
"name": "_type_clause"
}
},
{
@@ -7230,7 +7218,7 @@
"name": "return_type",
"content": {
"type": "SYMBOL",
"name": "_type_annotation"
"name": "_type_clause"
}
},
{
@@ -7325,7 +7313,7 @@
"name": "return_type",
"content": {
"type": "SYMBOL",
"name": "_type_annotation"
"name": "_type_clause"
}
},
{
@@ -7420,7 +7408,7 @@
"name": "return_type",
"content": {
"type": "SYMBOL",
"name": "_type_annotation"
"name": "_type_clause"
}
},
{
+306 -95
View File
@@ -103,7 +103,17 @@
"named": false
},
{
"type": "type_specification",
"type": "type_name",
"named": true
}
]
},
"type_name": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_name",
"named": true
}
]
@@ -918,17 +928,17 @@
"named": true
}
]
},
"values": {
"multiple": false,
"required": true,
"types": [
{
"type": "case_values",
"named": true
}
]
}
},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "case_values",
"named": true
}
]
}
},
{
@@ -1251,6 +1261,16 @@
}
]
},
"type_name": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_name",
"named": true
}
]
},
"value": {
"multiple": false,
"required": true,
@@ -1261,16 +1281,6 @@
}
]
}
},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_specification",
"named": true
}
]
}
},
{
@@ -1982,7 +1992,17 @@
"named": false
},
{
"type": "type_specification",
"type": "type_name",
"named": true
}
]
},
"type_name": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_name",
"named": true
}
]
@@ -2032,7 +2052,17 @@
"named": false
},
{
"type": "type_specification",
"type": "type_name",
"named": true
}
]
},
"type_name": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_name",
"named": true
}
]
@@ -2078,17 +2108,17 @@
"named": true
}
]
},
"type_name": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_name",
"named": true
}
]
}
},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_specification",
"named": true
}
]
}
},
{
@@ -3320,7 +3350,17 @@
"named": false
},
{
"type": "type_specification",
"type": "type_name",
"named": true
}
]
},
"type_name": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_name",
"named": true
}
]
@@ -3412,7 +3452,17 @@
"named": false
},
{
"type": "type_specification",
"type": "type_name",
"named": true
}
]
},
"type_name": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_name",
"named": true
}
]
@@ -3482,7 +3532,17 @@
"named": false
},
{
"type": "type_specification",
"type": "type_name",
"named": true
}
]
},
"type_name": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_name",
"named": true
}
]
@@ -3557,7 +3617,17 @@
"named": false
},
{
"type": "type_specification",
"type": "type_name",
"named": true
}
]
},
"type_name": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_name",
"named": true
}
]
@@ -3779,7 +3849,17 @@
"named": false
},
{
"type": "type_specification",
"type": "type_name",
"named": true
}
]
},
"type_name": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_name",
"named": true
}
]
@@ -3809,17 +3889,17 @@
"named": true
}
]
},
"type_name": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_name",
"named": true
}
]
}
},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_specification",
"named": true
}
]
}
},
{
@@ -4052,7 +4132,17 @@
"named": false
},
{
"type": "type_specification",
"type": "type_name",
"named": true
}
]
},
"type_name": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_name",
"named": true
}
]
@@ -4171,16 +4261,6 @@
}
]
},
"out": {
"multiple": false,
"required": false,
"types": [
{
"type": "out",
"named": false
}
]
},
"type": {
"multiple": true,
"required": false,
@@ -4190,18 +4270,18 @@
"named": false
},
{
"type": "type_specification",
"type": "type_name",
"named": true
}
]
},
"var": {
"type_name": {
"multiple": false,
"required": false,
"types": [
{
"type": "var",
"named": false
"type": "type_name",
"named": true
}
]
}
@@ -4538,10 +4618,20 @@
"named": true
}
]
},
"type_name": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_name",
"named": true
}
]
}
},
"children": {
"multiple": true,
"multiple": false,
"required": false,
"types": [
{
@@ -4551,10 +4641,6 @@
{
"type": "string",
"named": true
},
{
"type": "type_specification",
"named": true
}
]
}
@@ -5395,17 +5481,17 @@
"named": true
}
]
},
"type_name": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_name",
"named": true
}
]
}
},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_specification",
"named": true
}
]
}
},
{
@@ -5537,7 +5623,133 @@
"type": "try_statement",
"named": true,
"fields": {
"body": {
"except_body": {
"multiple": true,
"required": false,
"types": [
{
"type": "anonymous_function_statement",
"named": true
},
{
"type": "assignment_statement",
"named": true
},
{
"type": "break_statement",
"named": true
},
{
"type": "case_statement",
"named": true
},
{
"type": "class_definition_statement",
"named": true
},
{
"type": "const_statement",
"named": true
},
{
"type": "continue_statement",
"named": true
},
{
"type": "expression_statement",
"named": true
},
{
"type": "external_method_statement",
"named": true
},
{
"type": "for_statement",
"named": true
},
{
"type": "function_declaration_statement",
"named": true
},
{
"type": "function_definition_statement",
"named": true
},
{
"type": "global_statement",
"named": true
},
{
"type": "html_comment",
"named": true
},
{
"type": "html_paired_tag",
"named": true
},
{
"type": "html_self_closing_tag",
"named": true
},
{
"type": "if_statement",
"named": true
},
{
"type": "inherited_statement",
"named": true
},
{
"type": "matrix_iteration_statement",
"named": true
},
{
"type": "repeat_statement",
"named": true
},
{
"type": "return_statement",
"named": true
},
{
"type": "static_statement",
"named": true
},
{
"type": "try_statement",
"named": true
},
{
"type": "tslx_close_tag",
"named": true
},
{
"type": "tslx_expression_tag",
"named": true
},
{
"type": "tslx_open_tag",
"named": true
},
{
"type": "tslx_output_tag",
"named": true
},
{
"type": "uses_statement",
"named": true
},
{
"type": "var_statement",
"named": true
},
{
"type": "while_statement",
"named": true
}
]
},
"try_body": {
"multiple": true,
"required": false,
"types": [
@@ -5876,11 +6088,6 @@
"named": true,
"fields": {}
},
{
"type": "type_specification",
"named": true,
"fields": {}
},
{
"type": "unary_minus_expression",
"named": true,
@@ -5993,7 +6200,7 @@
"type": "unpack_pattern",
"named": true,
"fields": {
"variable": {
"name": {
"multiple": true,
"required": true,
"types": [
@@ -6115,17 +6322,17 @@
"named": true
}
]
},
"type_name": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_name",
"named": true
}
]
}
},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_specification",
"named": true
}
]
}
},
{
@@ -7082,6 +7289,10 @@
"type": "type",
"named": false
},
{
"type": "type_name",
"named": true
},
{
"type": "union",
"named": false
+95071 -96060
View File
File diff suppressed because it is too large Load Diff