From d805cec19c55ed1de421cdd61a883ffc6a7345e5 Mon Sep 17 00:00:00 2001 From: aniket-engg Date: Wed, 2 Aug 2023 12:18:31 +0530 Subject: [PATCH] id and comments --- .../editor/src/lib/providers/codeActionProvider.ts | 9 +++++++++ libs/remix-ui/editor/src/lib/providers/quickfixes.ts | 4 ++++ 2 files changed, 13 insertions(+) diff --git a/libs/remix-ui/editor/src/lib/providers/codeActionProvider.ts b/libs/remix-ui/editor/src/lib/providers/codeActionProvider.ts index 4cbfffe9da..1c4f3e75bc 100644 --- a/libs/remix-ui/editor/src/lib/providers/codeActionProvider.ts +++ b/libs/remix-ui/editor/src/lib/providers/codeActionProvider.ts @@ -28,12 +28,17 @@ export class RemixCodeActionProvider implements monaco.languages.CodeActionProvi fix = fixes[errStr] const cursorPosition = this.props.editorAPI.getHoverPosition({lineNumber: error.startLineNumber, column: error.startColumn}) const nodeAtPosition = await this.props.plugin.call('codeParser', 'definitionAtPosition', cursorPosition) + // Check if a function is hovered if (nodeAtPosition && nodeAtPosition.nodeType === "FunctionDefinition") { + // Identify type of AST node if (nodeAtPosition.parameters && !Array.isArray(nodeAtPosition.parameters) && Array.isArray(nodeAtPosition.parameters.parameters)) { const paramNodes = nodeAtPosition.parameters.parameters + // If method has parameters if (paramNodes.length) { + // Get last function parameter node const lastParamNode = paramNodes[paramNodes.length - 1] const location = await this.props.plugin.call('codeParser', 'getLineColumnOfNode', lastParamNode) + // Get end location of last function parameter, it returns end column of parameter name const lastParamEndLoc = location.end const lineContent = model.getLineContent(lastParamEndLoc.line + 1) msg = lineContent.substring(0, lastParamEndLoc.column + 2) + fix.message + lineContent.substring(lastParamEndLoc.column + 1, lineContent.length) @@ -44,6 +49,7 @@ export class RemixCodeActionProvider implements monaco.languages.CodeActionProvi endColumn: error.startColumn + msg.length } } else { + // If method has no parameters const location = await this.props.plugin.call('codeParser', 'getLineColumnOfNode', nodeAtPosition) const lineContent = model.getLineContent(location.start.line + 1) const i = lineContent.indexOf('()') @@ -57,8 +63,11 @@ export class RemixCodeActionProvider implements monaco.languages.CodeActionProvi } } else { const paramNodes = nodeAtPosition.parameters + // If method has parameters if (paramNodes.length) { + // Get last function parameter node const lastParamNode = paramNodes[paramNodes.length - 1] + // Get end location of last function parameter, it returns start column of parameter name const lastParamEndLoc = lastParamNode.loc.end const lineContent = model.getLineContent(lastParamEndLoc.line) msg = lineContent.substring(0, lastParamEndLoc.column + lastParamNode.name.length + 2) + fix.message + lineContent.substring(lastParamEndLoc.column + lastParamNode.name.length + 1, lineContent.length) diff --git a/libs/remix-ui/editor/src/lib/providers/quickfixes.ts b/libs/remix-ui/editor/src/lib/providers/quickfixes.ts index 10a2ccc080..14b24a5b0b 100644 --- a/libs/remix-ui/editor/src/lib/providers/quickfixes.ts +++ b/libs/remix-ui/editor/src/lib/providers/quickfixes.ts @@ -1,10 +1,12 @@ export default { "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: \" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.": { + "id": 1, "title": "Add open-source license", "message": "// SPDX-License-Identifier: GPL-3.0", "nodeType": "SourceUnit" }, "Warning: Source file does not specify required compiler version! Consider adding" : { + "id": 2, "title": "Add pragma line", "message": "pragma solidity ^0.*.*;", "nodeType": "PragmaDirective", @@ -16,11 +18,13 @@ export default { } }, "SyntaxError: No visibility specified. Did you intend to add \"public\"": { + "id": 3, "title": "Add visibility 'public'", "message": "public ", "nodeType": "FunctionDefinition" }, "Warning: Function state mutability can be restricted to view": { + "id": 4, "title": "Add mutability 'view'", "message": "view ", "nodeType": "FunctionDefinition"