sqllens 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/THIRD-PARTY-NOTICES.md +31 -6
- package/dist/api.d.ts +2 -0
- package/dist/api.js +2 -0
- package/dist/bigquery/fn-docs.generated.d.ts +2 -0
- package/dist/bigquery/fn-docs.generated.js +1704 -0
- package/dist/completion/jinja-slot.js +6 -1
- package/dist/databricks/fn-docs.generated.d.ts +2 -0
- package/dist/databricks/fn-docs.generated.js +3257 -0
- package/dist/duckdb/fn-docs.generated.d.ts +2 -0
- package/dist/duckdb/fn-docs.generated.js +2051 -0
- package/dist/duckdb/fold.js +6 -4
- package/dist/ident/fold.d.ts +5 -2
- package/dist/ident/fold.js +2 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/infer/types.js +4 -1
- package/dist/mysql/fn-docs.generated.d.ts +2 -0
- package/dist/mysql/fn-docs.generated.js +1204 -0
- package/dist/parse-diagnostics.js +33 -1
- package/dist/postgres/fn-docs.generated.d.ts +2 -0
- package/dist/postgres/fn-docs.generated.js +2818 -0
- package/dist/postgres/fold.js +9 -3
- package/dist/postgres/signatures.generated.js +585 -585
- package/dist/redshift/fn-docs.generated.d.ts +2 -0
- package/dist/redshift/fn-docs.generated.js +1457 -0
- package/dist/redshift/fold.js +6 -4
- package/dist/sema/resolve.js +3 -1
- package/dist/signature/docs.d.ts +16 -0
- package/dist/signature/docs.js +47 -0
- package/dist/signature/render.d.ts +7 -0
- package/dist/signature/render.js +40 -0
- package/dist/signature/signature.js +5 -5
- package/dist/snowflake/fn-docs.generated.d.ts +2 -0
- package/dist/snowflake/fn-docs.generated.js +2461 -0
- package/dist/sqlite/fn-docs.generated.d.ts +2 -0
- package/dist/sqlite/fn-docs.generated.js +609 -0
- package/dist/sqlite/fold.js +5 -7
- package/dist/trino/fn-docs.generated.d.ts +2 -0
- package/dist/trino/fn-docs.generated.js +1932 -0
- package/dist/tsql/fn-docs.generated.d.ts +2 -0
- package/dist/tsql/fn-docs.generated.js +1017 -0
- package/package.json +1 -1
|
@@ -1,9 +1,41 @@
|
|
|
1
|
+
/** Max expected-token candidates rendered in a diagnostic message (issue #31): a parser
|
|
2
|
+
* mid-statement can expect hundreds of tokens, and the full enumeration is unusable in an
|
|
3
|
+
* editor tooltip. The candidates are ANTLR's set order (token-type order), not relevance. */
|
|
4
|
+
const MAX_EXPECTED_TOKENS = 5;
|
|
5
|
+
/** Rewrite a trailing `expecting {a, b, …}` set to the first MAX_EXPECTED_TOKENS candidates
|
|
6
|
+
* plus a remainder count. Braceless single-token forms and small sets pass through. */
|
|
7
|
+
function capExpectedSet(msg) {
|
|
8
|
+
const open = msg.lastIndexOf(" expecting {");
|
|
9
|
+
if (open === -1 || !msg.endsWith("}"))
|
|
10
|
+
return msg;
|
|
11
|
+
const set = msg.slice(open + " expecting {".length, -1);
|
|
12
|
+
// Split on ", " outside quotes; literal display names like ',' contain the separator.
|
|
13
|
+
const parts = [];
|
|
14
|
+
let start = 0;
|
|
15
|
+
let inQuote = false;
|
|
16
|
+
for (let i = 0; i < set.length; i++) {
|
|
17
|
+
const ch = set[i];
|
|
18
|
+
if (ch === "'")
|
|
19
|
+
inQuote = !inQuote;
|
|
20
|
+
else if (!inQuote && ch === "," && set[i + 1] === " ") {
|
|
21
|
+
parts.push(set.slice(start, i));
|
|
22
|
+
start = i + 2;
|
|
23
|
+
i++;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
parts.push(set.slice(start));
|
|
27
|
+
if (parts.length <= MAX_EXPECTED_TOKENS)
|
|
28
|
+
return msg;
|
|
29
|
+
const kept = parts.slice(0, MAX_EXPECTED_TOKENS).join(", ");
|
|
30
|
+
const rest = parts.length - MAX_EXPECTED_TOKENS;
|
|
31
|
+
return `${msg.slice(0, open)} expecting {${kept}, … ${rest} more}`;
|
|
32
|
+
}
|
|
1
33
|
export function makeErrorCollector() {
|
|
2
34
|
const diagnostics = [];
|
|
3
35
|
const listener = {
|
|
4
36
|
syntaxError(_recognizer, offendingSymbol, line, charPositionInLine, msg) {
|
|
5
37
|
diagnostics.push({
|
|
6
|
-
message: msg,
|
|
38
|
+
message: capExpectedSet(msg),
|
|
7
39
|
line,
|
|
8
40
|
column: charPositionInLine,
|
|
9
41
|
offset: offendingSymbol?.start,
|