harmonyc 0.26.0 → 0.28.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.
@@ -31,6 +31,5 @@ export declare class VitestGenerator implements CodeGenerator {
31
31
  private paramName;
32
32
  stringParamDeclaration(index: number): string;
33
33
  variantParamDeclaration(index: number): string;
34
- functionName(phrase: Phrase): string;
35
- argPlaceholder(i: number): string;
34
+ functionName(p: Phrase): string;
36
35
  }
@@ -1,6 +1,6 @@
1
1
  import { basename } from 'path';
2
2
  import { xyzab } from "../compiler/compile.js";
3
- import { Arg, Response, Word, } from "../model/model.js";
3
+ import { Response, } from "../model/model.js";
4
4
  const X = 'X'.codePointAt(0);
5
5
  const A = 'A'.codePointAt(0);
6
6
  export class VitestGenerator {
@@ -43,8 +43,8 @@ export class VitestGenerator {
43
43
  }
44
44
  this.tf.print(``);
45
45
  for (const ph of this.phraseFns.keys()) {
46
- const p = this.phraseFns.get(ph);
47
- const parameters = p.args.map((a, i) => {
46
+ const phrase = this.phraseFns.get(ph);
47
+ const parameters = phrase.args.map((a, i) => {
48
48
  const declaration = a.toDeclaration(this, i);
49
49
  const parts = declaration.split(': ');
50
50
  return {
@@ -52,7 +52,7 @@ export class VitestGenerator {
52
52
  type: parts[1] || 'any',
53
53
  };
54
54
  });
55
- if (p instanceof Response) {
55
+ if (phrase instanceof Response) {
56
56
  parameters.push({
57
57
  name: 'res',
58
58
  type: 'any',
@@ -60,6 +60,7 @@ export class VitestGenerator {
60
60
  }
61
61
  this.phraseMethods.push({
62
62
  name: ph,
63
+ phrase,
63
64
  parameters,
64
65
  });
65
66
  }
@@ -137,7 +138,7 @@ export class VitestGenerator {
137
138
  }
138
139
  }
139
140
  phrase(p) {
140
- const phrasefn = this.functionName(p);
141
+ const phrasefn = p.toFunctionName(this.opts);
141
142
  if (!this.phraseFns.has(phrasefn))
142
143
  this.phraseFns.set(phrasefn, p);
143
144
  const f = this.featureVars.get(p.feature.name);
@@ -180,22 +181,8 @@ export class VitestGenerator {
180
181
  variantParamDeclaration(index) {
181
182
  return `${this.paramName(index)}: any`;
182
183
  }
183
- functionName(phrase) {
184
- const { kind } = phrase;
185
- let argIndex = -1;
186
- return ((kind === 'response' ? 'Then_' : 'When_') +
187
- (phrase.parts
188
- .flatMap((c) => c instanceof Word
189
- ? words(c.text).filter((x) => x)
190
- : c instanceof Arg
191
- ? [this.argPlaceholder(++argIndex)]
192
- : [])
193
- .join('_') || ''));
194
- }
195
- argPlaceholder(i) {
196
- return typeof this.opts.argumentPlaceholder === 'function'
197
- ? this.opts.argumentPlaceholder(i)
198
- : this.opts.argumentPlaceholder;
184
+ functionName(p) {
185
+ return p.toFunctionName(this.opts);
199
186
  }
200
187
  }
201
188
  function str(s) {
@@ -1 +1 @@
1
- {"version":3,"file":"VitestGenerator.js","sourceRoot":"","sources":["../../src/code_generator/VitestGenerator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VitestGenerator.js","sourceRoot":"","sources":["../../src/code_generator/VitestGenerator.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { OutFile } from '../code_generator/outFile.ts';
2
2
  export interface CompilerOptions {
3
+ /** What to put in function names at the positions of arguments */
3
4
  argumentPlaceholder: string | ((index: number) => string);
4
5
  }
5
6
  export interface CompiledFeature {
@@ -1 +1 @@
1
- {"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/compiler/compile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAA;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AACtD,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,OAAO,EAAW,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACnE,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAW3C,MAAM,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAE,CAAA;AAC7B,MAAM,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAE,CAAA;AAC7B,MAAM,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAE,CAAA;AAC7B,MAAM,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAE,CAAA;AAE7B,MAAM,UAAU,KAAK,CAAC,KAAa;IACjC,OAAO,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;AACzD,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,KAAa;IACjC,OAAO,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;AACzD,CAAC;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAoB;IACvD,mBAAmB,EAAE,KAAK;CAC3B,CAAA;AAED,MAAM,UAAU,cAAc,CAC5B,QAAgB,EAChB,GAAW,EACX,OAAiC,EAAE;IAEnC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;IACrD,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAY,CAAA;IACtC,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,YAAY,EAAE,CAAC;YAC5B,CAAC,CAAC,OAAO;gBACP,CAAC,CAAC,KAAK,GAAG,YAAY,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,WAAW,KAAK,CAAC,CAAC,YAAY,EAAE,CAAA;QAC9F,CAAC;aAAM,CAAC;YACN,CAAC,CAAC,KAAK,GAAG,YAAY,QAAQ,KAAK,CAAC,CAAC,KAAK,EAAE,CAAA;QAC9C,CAAC;QACD,MAAM,CAAC,CAAA;IACT,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;IAChC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IACvB,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;IACrC,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC9C,MAAM,EAAE,GAAG,IAAI,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE;QACjD,GAAG,wBAAwB;QAC3B,GAAG,IAAI;KACR,CAAC,CAAA;IACF,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAClB,OAAO;QACL,OAAO,EAAE,QAAQ;QACjB,aAAa,EAAE,EAAE,CAAC,aAAa;QAC/B,gBAAgB,EAAE,EAAE,CAAC,gBAAgB;KACtC,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/compiler/compile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAA;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AACtD,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,OAAO,EAAW,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACnE,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAY3C,MAAM,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAE,CAAA;AAC7B,MAAM,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAE,CAAA;AAC7B,MAAM,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAE,CAAA;AAC7B,MAAM,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAE,CAAA;AAE7B,MAAM,UAAU,KAAK,CAAC,KAAa;IACjC,OAAO,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;AACzD,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,KAAa;IACjC,OAAO,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;AACzD,CAAC;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAoB;IACvD,mBAAmB,EAAE,KAAK;CAC3B,CAAA;AAED,MAAM,UAAU,cAAc,CAC5B,QAAgB,EAChB,GAAW,EACX,OAAiC,EAAE;IAEnC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;IACrD,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAY,CAAA;IACtC,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,YAAY,EAAE,CAAC;YAC5B,CAAC,CAAC,OAAO;gBACP,CAAC,CAAC,KAAK,GAAG,YAAY,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,WAAW,KAAK,CAAC,CAAC,YAAY,EAAE,CAAA;QAC9F,CAAC;aAAM,CAAC;YACN,CAAC,CAAC,KAAK,GAAG,YAAY,QAAQ,KAAK,CAAC,CAAC,KAAK,EAAE,CAAA;QAC9C,CAAC;QACD,MAAM,CAAC,CAAA;IACT,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;IAChC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IACvB,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;IACrC,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC9C,MAAM,EAAE,GAAG,IAAI,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE;QACjD,GAAG,wBAAwB;QAC3B,GAAG,IAAI;KACR,CAAC,CAAA;IACF,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAClB,OAAO;QACL,OAAO,EAAE,QAAQ;QACjB,aAAa,EAAE,EAAE,CAAC,aAAa;QAC/B,gBAAgB,EAAE,EAAE,CAAC,gBAAgB;KACtC,CAAA;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { CompletionItem, TextDocumentPositionParams } from 'vscode-languageserver';
2
+ export declare function resolveCompletion(item: CompletionItem): CompletionItem;
3
+ export declare function provideCompletion(_textDocumentPosition: TextDocumentPositionParams): CompletionItem[];
@@ -0,0 +1,31 @@
1
+ import { CompletionItemKind, } from 'vscode-languageserver';
2
+ // This handler resolves additional information for the item selected in
3
+ // the completion list.
4
+ export function resolveCompletion(item) {
5
+ if (item.data === 1) {
6
+ item.detail = 'Harmony Code';
7
+ item.documentation = 'Harmony Code language support';
8
+ }
9
+ else if (item.data === 2) {
10
+ item.detail = 'Section keyword';
11
+ item.documentation = 'Define a test section';
12
+ }
13
+ return item;
14
+ }
15
+ export function provideCompletion(_textDocumentPosition) {
16
+ // The pass parameter contains the position of the text document in
17
+ // which code complete got requested.
18
+ return [
19
+ {
20
+ label: 'Harmony',
21
+ kind: CompletionItemKind.Text,
22
+ data: 1,
23
+ },
24
+ {
25
+ label: 'Section',
26
+ kind: CompletionItemKind.Keyword,
27
+ data: 2,
28
+ },
29
+ ];
30
+ }
31
+ //# sourceMappingURL=provideCompletion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provideCompletion.js","sourceRoot":"","sources":["../../src/lsp/provideCompletion.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,kBAAkB,GAEnB,MAAM,uBAAuB,CAAA;AAE9B,wEAAwE;AACxE,uBAAuB;AACvB,MAAM,UAAU,iBAAiB,CAAC,IAAoB;IACpD,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,cAAc,CAAA;QAC5B,IAAI,CAAC,aAAa,GAAG,+BAA+B,CAAA;IACtD,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,iBAAiB,CAAA;QAC/B,IAAI,CAAC,aAAa,GAAG,uBAAuB,CAAA;IAC9C,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,qBAAiD;IAEjD,mEAAmE;IACnE,qCAAqC;IACrC,OAAO;QACL;YACE,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,kBAAkB,CAAC,IAAI;YAC7B,IAAI,EAAE,CAAC;SACR;QACD;YACE,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,kBAAkB,CAAC,OAAO;YAChC,IAAI,EAAE,CAAC;SACR;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { Location, TextDocumentPositionParams } from 'vscode-languageserver';
2
+ export declare function provideDefinition(textDocumentParams: TextDocumentPositionParams): Location | null;
@@ -0,0 +1,71 @@
1
+ import { Phrase } from '../model/model.js';
2
+ import { parse } from '../parser/parser.js';
3
+ import { connection, documents } from './server.js';
4
+ import { getWorkspace } from './workspace.js';
5
+ // Handle go to definition requests
6
+ export function provideDefinition(textDocumentParams) {
7
+ const uri = textDocumentParams.textDocument.uri;
8
+ const document = documents.get(uri);
9
+ if (!document) {
10
+ return null;
11
+ }
12
+ // Only handle .harmony files
13
+ if (!uri.endsWith('.harmony')) {
14
+ connection.console.log(`Definition request for non-harmony file: ${uri}`);
15
+ return null;
16
+ }
17
+ const workspace = getWorkspace();
18
+ if (!workspace) {
19
+ connection.console.log('No workspace available for definition lookup');
20
+ return null;
21
+ }
22
+ try {
23
+ // Convert URI to file path
24
+ const filePath = uri.replace('file://', '');
25
+ // Parse the document to get the AST
26
+ const text = document.getText();
27
+ const ast = parse(text);
28
+ connection.console.log(`Definition request for ${uri} at ${textDocumentParams.position.line}:${textDocumentParams.position.character}`);
29
+ // Use AST to find the node at the cursor position
30
+ const nodeAtPosition = ast.findNodeAtPosition(textDocumentParams.position.line + 1, textDocumentParams.position.character);
31
+ let phrase = null;
32
+ if (nodeAtPosition) {
33
+ connection.console.log(`Found node at position: ${nodeAtPosition.constructor.name}`);
34
+ // If we found a Phrase, use its information for definition lookup
35
+ if (nodeAtPosition instanceof Phrase) {
36
+ phrase = nodeAtPosition;
37
+ connection.console.log(`Found phrase: ${phrase.kind} - ${phrase.toString()}`);
38
+ // TODO: Use phrase information to improve definition lookup precision
39
+ }
40
+ }
41
+ if (!phrase) {
42
+ connection.console.log('No phrase found at the given position');
43
+ return null;
44
+ }
45
+ // Use workspace to find definition in corresponding .phrases.ts file
46
+ const location = workspace.findDefinition(filePath, phrase);
47
+ if (location) {
48
+ connection.console.log(`Found definition at ${location.uri}`);
49
+ return location;
50
+ }
51
+ else {
52
+ connection.console.log('No definition found in phrases file');
53
+ // Fallback: return first line of the current harmony file
54
+ const fallbackLocation = {
55
+ uri: uri,
56
+ range: {
57
+ start: { line: 0, character: 0 },
58
+ end: { line: 0, character: 0 },
59
+ },
60
+ };
61
+ connection.console.log(`Returning fallback definition at line 0 of current file`);
62
+ return fallbackLocation;
63
+ }
64
+ }
65
+ catch (error) {
66
+ // If there's a parse error, we can't provide definitions
67
+ connection.console.log(`Cannot provide definition due to error: ${error}`);
68
+ return null;
69
+ }
70
+ }
71
+ //# sourceMappingURL=provideDefinition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provideDefinition.js","sourceRoot":"","sources":["../../src/lsp/provideDefinition.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,6 @@
1
1
  #!/usr/bin/env node
2
- export {};
2
+ import { TextDocuments } from 'vscode-languageserver/node.js';
3
+ import { TextDocument } from 'vscode-languageserver-textdocument';
4
+ export declare const connection: import("vscode-languageserver")._Connection<import("vscode-languageserver")._, import("vscode-languageserver")._, import("vscode-languageserver")._, import("vscode-languageserver")._, import("vscode-languageserver")._, import("vscode-languageserver")._, import("vscode-languageserver/lib/common/inlineCompletion.proposed.js").InlineCompletionFeatureShape, import("vscode-languageserver")._>;
5
+ export declare const documents: TextDocuments<TextDocument>;
6
+ export declare let hasDiagnosticRelatedInformationCapability: boolean;
@@ -1,16 +1,30 @@
1
1
  #!/usr/bin/env node
2
- import { CompletionItemKind, createConnection, DiagnosticSeverity, DidChangeConfigurationNotification, ProposedFeatures, TextDocuments, TextDocumentSyncKind, } from 'vscode-languageserver/node.js';
2
+ import { createConnection, DidChangeConfigurationNotification, ProposedFeatures, TextDocuments, TextDocumentSyncKind, } from 'vscode-languageserver/node.js';
3
3
  import { TextDocument } from 'vscode-languageserver-textdocument';
4
- import { parse } from '../parser/parser.js';
4
+ import { provideCompletion, resolveCompletion } from './provideCompletion.js';
5
+ import { provideDefinition } from './provideDefinition.js';
6
+ import { validateTextDocument } from './validateTextDocument.js';
7
+ import { getWorkspace, initializeWorkspace } from './workspace.js';
5
8
  // Create a connection for the server, using Node's IPC as a transport.
6
- const connection = createConnection(ProposedFeatures.all);
9
+ export const connection = createConnection(ProposedFeatures.all);
7
10
  // Create a simple text document manager.
8
- const documents = new TextDocuments(TextDocument);
11
+ export const documents = new TextDocuments(TextDocument);
9
12
  let hasConfigurationCapability = false;
10
13
  let hasWorkspaceFolderCapability = false;
11
- let hasDiagnosticRelatedInformationCapability = false;
14
+ export let hasDiagnosticRelatedInformationCapability = false;
12
15
  connection.onInitialize((params) => {
13
16
  const capabilities = params.capabilities;
17
+ // Initialize workspace if we have workspace folders
18
+ if (params.workspaceFolders && params.workspaceFolders.length > 0) {
19
+ const workspaceRoot = params.workspaceFolders[0].uri.replace('file://', '');
20
+ initializeWorkspace(workspaceRoot);
21
+ connection.console.log(`Initialized workspace at: ${workspaceRoot}`);
22
+ }
23
+ else if (params.rootUri) {
24
+ const workspaceRoot = params.rootUri.replace('file://', '');
25
+ initializeWorkspace(workspaceRoot);
26
+ connection.console.log(`Initialized workspace at: ${workspaceRoot}`);
27
+ }
14
28
  // Does the client support the `workspace/configuration` request?
15
29
  hasConfigurationCapability = !!(capabilities.workspace && !!capabilities.workspace.configuration);
16
30
  hasWorkspaceFolderCapability = !!(capabilities.workspace && !!capabilities.workspace.workspaceFolders);
@@ -24,8 +38,7 @@ connection.onInitialize((params) => {
24
38
  completionProvider: {
25
39
  // WIP resolveProvider: true,
26
40
  },
27
- // Tell the client that this server supports go to definition
28
- // WIP definitionProvider: true,
41
+ definitionProvider: true,
29
42
  },
30
43
  };
31
44
  if (hasWorkspaceFolderCapability) {
@@ -78,153 +91,55 @@ function getDocumentSettings(resource) {
78
91
  }
79
92
  return result;
80
93
  }
81
- // Only keep settings for open documents
82
- documents.onDidClose((e) => {
83
- documentSettings.delete(e.document.uri);
84
- });
85
94
  // The content of a text document has changed. This event is emitted
86
95
  // when the text document first opened or when its content has changed.
87
96
  documents.onDidChangeContent((change) => {
88
97
  validateTextDocument(change.document);
89
- });
90
- async function validateTextDocument(textDocument) {
91
- const text = textDocument.getText();
92
- const diagnostics = [];
93
- try {
94
- // Try to parse the document using the harmonyc parser
95
- const ast = parse(text);
96
- connection.console.log(`Successfully parsed document: ${textDocument.uri}`);
97
- // If parsing succeeds, no errors to report
98
- }
99
- catch (error) {
100
- // If parsing fails, create a diagnostic for the error
101
- const errorMessage = error instanceof Error ? error.message : String(error);
102
- // Try to extract line information from error message if available
103
- let line = 0;
104
- let character = 0;
105
- // Look for line information in the error message
106
- const lineMatch = errorMessage.match(/line (\d+)/i);
107
- if (lineMatch) {
108
- line = parseInt(lineMatch[1]) - 1; // Convert to 0-based
109
- }
110
- // Look for column/character information in the error message
111
- const columnMatch = errorMessage.match(/column (\d+)/i);
112
- if (columnMatch) {
113
- character = parseInt(columnMatch[1]) - 1; // Convert to 0-based
98
+ const uri = change.document.uri;
99
+ const workspace = getWorkspace();
100
+ if (workspace) {
101
+ const filePath = uri.replace('file://', '');
102
+ if (uri.endsWith('.harmony')) {
103
+ workspace.addHarmonyFile(filePath, change.document.getText());
114
104
  }
115
- // If no specific position found, try to find the error position from the parser
116
- if (line === 0 &&
117
- character === 0 &&
118
- error instanceof Error &&
119
- 'pos' in error &&
120
- typeof error.pos === 'object') {
121
- const pos = error.pos;
122
- if (pos && pos.rowBegin) {
123
- line = pos.rowBegin - 1;
124
- character = pos.columnBegin ? pos.columnBegin - 1 : 0;
125
- }
105
+ else if (uri.endsWith('.phrases.ts')) {
106
+ workspace.addPhrasesFile(filePath, change.document.getText());
126
107
  }
127
- else if (errorMessage.match(/^<END-OF-FILE>/)) {
128
- line = text.split('\n').length - 1;
129
- character = text.length - text.lastIndexOf('\n') - 1;
108
+ }
109
+ });
110
+ documents.onDidOpen((event) => {
111
+ const uri = event.document.uri;
112
+ const workspace = getWorkspace();
113
+ if (workspace) {
114
+ const filePath = uri.replace('file://', '');
115
+ if (uri.endsWith('.harmony')) {
116
+ workspace.addHarmonyFile(filePath, event.document.getText());
130
117
  }
131
- const lines = text.split('\n');
132
- const endCharacter = line < lines.length ? lines[line].length : character;
133
- const diagnostic = {
134
- severity: DiagnosticSeverity.Error,
135
- range: {
136
- start: { line, character },
137
- end: { line, character: Math.max(character, endCharacter) },
138
- },
139
- message: `${errorMessage}`
140
- .replace(/^\{.*?\}:\s*/, '')
141
- .replace(/^Unable to consume token: /, 'Invalid '),
142
- source: 'harmony-parser',
143
- };
144
- if (hasDiagnosticRelatedInformationCapability) {
145
- diagnostic.relatedInformation = [
146
- {
147
- location: {
148
- uri: textDocument.uri,
149
- range: diagnostic.range,
150
- },
151
- message: 'Harmony syntax error detected by parser',
152
- },
153
- ];
118
+ else if (uri.endsWith('.phrases.ts')) {
119
+ workspace.addPhrasesFile(filePath, event.document.getText());
154
120
  }
155
- diagnostics.push(diagnostic);
156
- connection.console.log(`Parse error in ${textDocument.uri}: ${errorMessage}`);
157
- }
158
- // Send the computed diagnostics to VS Code.
159
- connection.sendDiagnostics({ uri: textDocument.uri, diagnostics });
160
- }
161
- // Handle go to definition requests
162
- connection.onDefinition((textDocumentParams) => {
163
- const uri = textDocumentParams.textDocument.uri;
164
- const document = documents.get(uri);
165
- if (!document) {
166
- return null;
167
121
  }
168
- try {
169
- // Parse the document to get the AST
170
- const text = document.getText();
171
- const ast = parse(text);
172
- // For now, simple implementation: always return first line
173
- // In the future, we could traverse the AST to find actual definitions
174
- const location = {
175
- uri: uri,
176
- range: {
177
- start: { line: 0, character: 0 },
178
- end: { line: 0, character: 0 },
179
- },
180
- };
181
- connection.console.log(`Definition request for ${uri} at ${textDocumentParams.position.line}:${textDocumentParams.position.character}`);
182
- connection.console.log(`Returning definition at line 0`);
183
- return location;
184
- }
185
- catch (error) {
186
- // If there's a parse error, we can't provide definitions
187
- connection.console.log(`Cannot provide definition due to parse error: ${error}`);
188
- return null;
122
+ });
123
+ documents.onDidClose((event) => {
124
+ const uri = event.document.uri;
125
+ documentSettings.delete(uri);
126
+ // When a .harmony file is closed, optionally remove its .phrases.ts file
127
+ if (uri.endsWith('.harmony')) {
128
+ const workspace = getWorkspace();
129
+ if (workspace) {
130
+ const filePath = uri.replace('file://', '');
131
+ // Note: We might want to keep the phrases file loaded even when harmony file is closed
132
+ // workspace.removePhrasesFile(filePath)
133
+ }
189
134
  }
190
135
  });
191
- connection.onDidChangeWatchedFiles((_change) => {
136
+ connection.onDefinition(provideDefinition);
137
+ connection.onDidChangeWatchedFiles((change) => {
192
138
  // Monitored files have change in VS Code
193
139
  connection.console.log('We received a file change event');
194
140
  });
195
- // This handler provides the initial list of the completion items.
196
- connection.onCompletion((_textDocumentPosition) => {
197
- // The pass parameter contains the position of the text document in
198
- // which code complete got requested.
199
- return [
200
- {
201
- label: 'Harmony',
202
- kind: CompletionItemKind.Text,
203
- data: 1,
204
- },
205
- {
206
- label: 'Section',
207
- kind: CompletionItemKind.Keyword,
208
- data: 2,
209
- },
210
- ];
211
- });
212
- // This handler resolves additional information for the item selected in
213
- // the completion list.
214
- connection.onCompletionResolve((item) => {
215
- if (item.data === 1) {
216
- item.detail = 'Harmony Code';
217
- item.documentation = 'Harmony Code language support';
218
- }
219
- else if (item.data === 2) {
220
- item.detail = 'Section keyword';
221
- item.documentation = 'Define a test section';
222
- }
223
- return item;
224
- });
225
- // Make the text document manager listen on the connection
226
- // for open, change and close text document events
141
+ connection.onCompletion(provideCompletion);
142
+ connection.onCompletionResolve(resolveCompletion);
227
143
  documents.listen(connection);
228
- // Listen on the connection
229
144
  connection.listen();
230
145
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/lsp/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/lsp/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { TextDocument } from 'vscode-languageserver-textdocument';
2
+ export declare function validateTextDocument(textDocument: TextDocument): Promise<void>;
@@ -0,0 +1,78 @@
1
+ import { DiagnosticSeverity } from 'vscode-languageserver';
2
+ import { parse } from '../parser/parser.js';
3
+ import { connection, hasDiagnosticRelatedInformationCapability, } from './server.js';
4
+ export async function validateTextDocument(textDocument) {
5
+ if (!textDocument.uri.endsWith('.harmony')) {
6
+ return;
7
+ }
8
+ const text = textDocument.getText();
9
+ const diagnostics = [];
10
+ try {
11
+ // Try to parse the document using the harmonyc parser
12
+ const ast = parse(text);
13
+ connection.console.log(`Successfully parsed document: ${textDocument.uri}`);
14
+ // If parsing succeeds, no errors to report
15
+ }
16
+ catch (error) {
17
+ // If parsing fails, create a diagnostic for the error
18
+ const errorMessage = error instanceof Error ? error.message : String(error);
19
+ // Try to extract line information from error message if available
20
+ let line = 0;
21
+ let character = 0;
22
+ // Look for line information in the error message
23
+ const lineMatch = errorMessage.match(/line (\d+)/i);
24
+ if (lineMatch) {
25
+ line = parseInt(lineMatch[1]) - 1; // Convert to 0-based
26
+ }
27
+ // Look for column/character information in the error message
28
+ const columnMatch = errorMessage.match(/column (\d+)/i);
29
+ if (columnMatch) {
30
+ character = parseInt(columnMatch[1]) - 1; // Convert to 0-based
31
+ }
32
+ // If no specific position found, try to find the error position from the parser
33
+ if (line === 0 &&
34
+ character === 0 &&
35
+ error instanceof Error &&
36
+ 'pos' in error &&
37
+ typeof error.pos === 'object') {
38
+ const pos = error.pos;
39
+ if (pos && pos.rowBegin) {
40
+ line = pos.rowBegin - 1;
41
+ character = pos.columnBegin ? pos.columnBegin - 1 : 0;
42
+ }
43
+ }
44
+ else if (errorMessage.match(/^<END-OF-FILE>/)) {
45
+ line = text.split('\n').length - 1;
46
+ character = text.length - text.lastIndexOf('\n') - 1;
47
+ }
48
+ const lines = text.split('\n');
49
+ const endCharacter = line < lines.length ? lines[line].length : character;
50
+ const diagnostic = {
51
+ severity: DiagnosticSeverity.Error,
52
+ range: {
53
+ start: { line, character },
54
+ end: { line, character: Math.max(character, endCharacter) },
55
+ },
56
+ message: `${errorMessage}`
57
+ .replace(/^\{.*?\}:\s*/, '')
58
+ .replace(/^Unable to consume token: /, 'Invalid '),
59
+ source: 'harmony-parser',
60
+ };
61
+ if (hasDiagnosticRelatedInformationCapability) {
62
+ diagnostic.relatedInformation = [
63
+ {
64
+ location: {
65
+ uri: textDocument.uri,
66
+ range: diagnostic.range,
67
+ },
68
+ message: 'Harmony syntax error detected by parser',
69
+ },
70
+ ];
71
+ }
72
+ diagnostics.push(diagnostic);
73
+ connection.console.log(`Parse error in ${textDocument.uri}: ${errorMessage}`);
74
+ }
75
+ // Send the computed diagnostics to VS Code.
76
+ connection.sendDiagnostics({ uri: textDocument.uri, diagnostics });
77
+ }
78
+ //# sourceMappingURL=validateTextDocument.js.map