LSP rename

This commit is contained in:
Marenz
2022-07-08 11:52:45 +02:00
parent b6f11b3392
commit 16b64f3aee
14 changed files with 1654 additions and 41 deletions
+307
View File
@@ -0,0 +1,307 @@
// SPDX-License-Identifier: UNLICENSED
pragma solidity >=0.8.0;
contract ToRename
// ^ @CursorOnContractDefinition
// ^^^^^^^^ @ContractInDefinition
{
}
contract User
// ^^^^ @UserContractInContractTest
{
ToRename public publicVariable;
// ^^^^^^^^ @ContractInPublicVariable
// ^ @CursorOnPublicVariableType
ToRename[10] previousContracts;
// ^^^^^^^^ @ContractInArrayType
// ^ @CursorOnArrayType
mapping(int => ToRename) contractMapping;
// ^^^^^^^^ @ContractInMapping
// ^ @CursorOnMapping
function getContract() public returns (ToRename)
// ^^^^^^^^ @ContractInReturnParameter
// ^ @CursorOnReturnParameter
{
return new ToRename();
// ^^^^^^^^ @ContractInReturnExpression
// ^ @CursorOnReturnExpression
}
function setContract(ToRename _contract) public
// ^^^^^^^^ @ContractInParameter
// ^ @CursorOnParameter
{
publicVariable = _contract;
}
}
// ----
// -> textDocument/rename {
// "newName": "Renamed",
// "position": @CursorOnContractDefinition
// }
// <- {
// "changes": {
// "rename/contract.sol": [
// {
// "newText": "Renamed",
// "range": @ContractInParameter
// },
// {
// "newText": "Renamed",
// "range": @ContractInReturnExpression
// },
// {
// "newText": "Renamed",
// "range": @ContractInReturnParameter
// },
// {
// "newText": "Renamed",
// "range": @ContractInMapping
// },
// {
// "newText": "Renamed",
// "range": @ContractInArrayType
// },
// {
// "newText": "Renamed",
// "range": @ContractInPublicVariable
// },
// {
// "newText": "Renamed",
// "range": @ContractInDefinition
// }
// ]
// }
// }
// -> textDocument/rename {
// "newName": "Renamed",
// "position": @CursorOnReturnParameter
// }
// <- {
// "changes": {
// "rename/contract.sol": [
// {
// "newText": "Renamed",
// "range": @ContractInParameter
// },
// {
// "newText": "Renamed",
// "range": @ContractInReturnExpression
// },
// {
// "newText": "Renamed",
// "range": @ContractInReturnParameter
// },
// {
// "newText": "Renamed",
// "range": @ContractInMapping
// },
// {
// "newText": "Renamed",
// "range": @ContractInArrayType
// },
// {
// "newText": "Renamed",
// "range": @ContractInPublicVariable
// },
// {
// "newText": "Renamed",
// "range": @ContractInDefinition
// }
// ]
// }
// }
// -> textDocument/rename {
// "newName": "Renamed",
// "position": @CursorOnReturnExpression
// }
// <- {
// "changes": {
// "rename/contract.sol": [
// {
// "newText": "Renamed",
// "range": @ContractInParameter
// },
// {
// "newText": "Renamed",
// "range": @ContractInReturnExpression
// },
// {
// "newText": "Renamed",
// "range": @ContractInReturnParameter
// },
// {
// "newText": "Renamed",
// "range": @ContractInMapping
// },
// {
// "newText": "Renamed",
// "range": @ContractInArrayType
// },
// {
// "newText": "Renamed",
// "range": @ContractInPublicVariable
// },
// {
// "newText": "Renamed",
// "range": @ContractInDefinition
// }
// ]
// }
// }
// -> textDocument/rename {
// "newName": "Renamed",
// "position": @CursorOnPublicVariableType
// }
// <- {
// "changes": {
// "rename/contract.sol": [
// {
// "newText": "Renamed",
// "range": @ContractInParameter
// },
// {
// "newText": "Renamed",
// "range": @ContractInReturnExpression
// },
// {
// "newText": "Renamed",
// "range": @ContractInReturnParameter
// },
// {
// "newText": "Renamed",
// "range": @ContractInMapping
// },
// {
// "newText": "Renamed",
// "range": @ContractInArrayType
// },
// {
// "newText": "Renamed",
// "range": @ContractInPublicVariable
// },
// {
// "newText": "Renamed",
// "range": @ContractInDefinition
// }
// ]
// }
// }
// -> textDocument/rename {
// "newName": "Renamed",
// "position": @CursorOnArrayType
// }
// <- {
// "changes": {
// "rename/contract.sol": [
// {
// "newText": "Renamed",
// "range": @ContractInParameter
// },
// {
// "newText": "Renamed",
// "range": @ContractInReturnExpression
// },
// {
// "newText": "Renamed",
// "range": @ContractInReturnParameter
// },
// {
// "newText": "Renamed",
// "range": @ContractInMapping
// },
// {
// "newText": "Renamed",
// "range": @ContractInArrayType
// },
// {
// "newText": "Renamed",
// "range": @ContractInPublicVariable
// },
// {
// "newText": "Renamed",
// "range": @ContractInDefinition
// }
// ]
// }
// }
// -> textDocument/rename {
// "newName": "Renamed",
// "position": @CursorOnMapping
// }
// <- {
// "changes": {
// "rename/contract.sol": [
// {
// "newText": "Renamed",
// "range": @ContractInParameter
// },
// {
// "newText": "Renamed",
// "range": @ContractInReturnExpression
// },
// {
// "newText": "Renamed",
// "range": @ContractInReturnParameter
// },
// {
// "newText": "Renamed",
// "range": @ContractInMapping
// },
// {
// "newText": "Renamed",
// "range": @ContractInArrayType
// },
// {
// "newText": "Renamed",
// "range": @ContractInPublicVariable
// },
// {
// "newText": "Renamed",
// "range": @ContractInDefinition
// }
// ]
// }
// }
// -> textDocument/rename {
// "newName": "Renamed",
// "position": @CursorOnParameter
// }
// <- {
// "changes": {
// "rename/contract.sol": [
// {
// "newText": "Renamed",
// "range": @ContractInParameter
// },
// {
// "newText": "Renamed",
// "range": @ContractInReturnExpression
// },
// {
// "newText": "Renamed",
// "range": @ContractInReturnParameter
// },
// {
// "newText": "Renamed",
// "range": @ContractInMapping
// },
// {
// "newText": "Renamed",
// "range": @ContractInArrayType
// },
// {
// "newText": "Renamed",
// "range": @ContractInPublicVariable
// },
// {
// "newText": "Renamed",
// "range": @ContractInDefinition
// }
// ]
// }
// }
+194
View File
@@ -0,0 +1,194 @@
// SPDX-License-Identifier: UNLICENSED
pragma solidity >=0.8.0;
contract C
{
function renameMe() public pure returns (int)
// ^^^^^^^^ @FunctionInDefinition
// ^ @CursorInDefinition
{
return 1;
}
function other() public view
{
renameMe();
// ^^^^^^^^ @FunctionInFunctionSameContract
// ^ @CursorInFunctionSameContract
this.renameMe();
// ^^^^^^^^ @FunctionInFunctionSameContractExternal
// ^ @CursorInFunctionSameContractExternal
}
}
contract Other
{
C m_contract;
function other() public view
{
m_contract.renameMe();
// ^^^^^^^^ @FunctionInFunctionOtherContract
// ^ @CursorInFunctionOtherContract
}
}
function free() pure
{
C local_contract;
local_contract.renameMe();
// ^^^^^^^^ @FunctionInFreeFunction
// ^ @CursorInFreeFunction
}
// ----
// -> textDocument/rename {
// "newName": "Renamed",
// "position": @CursorInDefinition
// }
// <- {
// "changes": {
// "rename/function.sol": [
// {
// "newText": "Renamed",
// "range": @FunctionInFreeFunction
// },
// {
// "newText": "Renamed",
// "range": @FunctionInFunctionOtherContract
// },
// {
// "newText": "Renamed",
// "range": @FunctionInFunctionSameContractExternal
// },
// {
// "newText": "Renamed",
// "range": @FunctionInFunctionSameContract
// },
// {
// "newText": "Renamed",
// "range": @FunctionInDefinition
// }
// ]
// }
// }
// -> textDocument/rename {
// "newName": "Renamed",
// "position": @CursorInFunctionOtherContract
// }
// <- {
// "changes": {
// "rename/function.sol": [
// {
// "newText": "Renamed",
// "range": @FunctionInFreeFunction
// },
// {
// "newText": "Renamed",
// "range": @FunctionInFunctionOtherContract
// },
// {
// "newText": "Renamed",
// "range": @FunctionInFunctionSameContractExternal
// },
// {
// "newText": "Renamed",
// "range": @FunctionInFunctionSameContract
// },
// {
// "newText": "Renamed",
// "range": @FunctionInDefinition
// }
// ]
// }
// }
// -> textDocument/rename {
// "newName": "Renamed",
// "position": @CursorInFunctionSameContractExternal
// }
// <- {
// "changes": {
// "rename/function.sol": [
// {
// "newText": "Renamed",
// "range": @FunctionInFreeFunction
// },
// {
// "newText": "Renamed",
// "range": @FunctionInFunctionOtherContract
// },
// {
// "newText": "Renamed",
// "range": @FunctionInFunctionSameContractExternal
// },
// {
// "newText": "Renamed",
// "range": @FunctionInFunctionSameContract
// },
// {
// "newText": "Renamed",
// "range": @FunctionInDefinition
// }
// ]
// }
// }
// -> textDocument/rename {
// "newName": "Renamed",
// "position": @CursorInFunctionSameContract
// }
// <- {
// "changes": {
// "rename/function.sol": [
// {
// "newText": "Renamed",
// "range": @FunctionInFreeFunction
// },
// {
// "newText": "Renamed",
// "range": @FunctionInFunctionOtherContract
// },
// {
// "newText": "Renamed",
// "range": @FunctionInFunctionSameContractExternal
// },
// {
// "newText": "Renamed",
// "range": @FunctionInFunctionSameContract
// },
// {
// "newText": "Renamed",
// "range": @FunctionInDefinition
// }
// ]
// }
// }
// -> textDocument/rename {
// "newName": "Renamed",
// "position": @CursorInFreeFunction
// }
// <- {
// "changes": {
// "rename/function.sol": [
// {
// "newText": "Renamed",
// "range": @FunctionInFreeFunction
// },
// {
// "newText": "Renamed",
// "range": @FunctionInFunctionOtherContract
// },
// {
// "newText": "Renamed",
// "range": @FunctionInFunctionSameContractExternal
// },
// {
// "newText": "Renamed",
// "range": @FunctionInFunctionSameContract
// },
// {
// "newText": "Renamed",
// "range": @FunctionInDefinition
// }
// ]
// }
// }
@@ -0,0 +1,202 @@
// SPDX-License-Identifier: UNLICENSED
pragma solidity >=0.8.0;
contract C
{
function foo(int a, int b, int c) pure public returns(int)
// ^ @ParameterB
// ^ @ParameterA
// ^ @ParameterC
{
return a + b + c;
// ^ @ParameterBInFoo
// ^ @ParameterAInFoo
// ^ @ParameterCInFoo
}
function bar() public view
{
this.foo({c:1, b:2, a:3});
// ^ @ParameterBInCall
// ^ @ParameterCInCall
// ^ @ParameterAInCall
}
}
// ----
// -> textDocument/rename {
// "newName": "Renamed",
// "position": @ParameterA
// }
// <- {
// "changes": {
// "rename/functionCall.sol": [
// {
// "newText": "Renamed",
// "range": @ParameterAInCall
// },
// {
// "newText": "Renamed",
// "range": @ParameterAInFoo
// },
// {
// "newText": "Renamed",
// "range": @ParameterA
// }
// ]
// }
// }
// -> textDocument/rename {
// "newName": "Renamed",
// "position": @ParameterAInCall
// }
// <- {
// "changes": {
// "rename/functionCall.sol": [
// {
// "newText": "Renamed",
// "range": @ParameterAInCall
// },
// {
// "newText": "Renamed",
// "range": @ParameterAInFoo
// },
// {
// "newText": "Renamed",
// "range": @ParameterA
// }
// ]
// }
// }
// -> textDocument/rename {
// "newName": "Renamed",
// "position": @ParameterAInFoo
// }
// <- {
// "changes": {
// "rename/functionCall.sol": [
// {
// "newText": "Renamed",
// "range": @ParameterAInCall
// },
// {
// "newText": "Renamed",
// "range": @ParameterAInFoo
// },
// {
// "newText": "Renamed",
// "range": @ParameterA
// }
// ]
// }
// }
// -> textDocument/rename {
// "newName": "Renamed",
// "position": @ParameterC
// }
// <- {
// "changes": {
// "rename/functionCall.sol": [
// {
// "newText": "Renamed",
// "range": @ParameterCInCall
// },
// {
// "newText": "Renamed",
// "range": @ParameterCInFoo
// },
// {
// "newText": "Renamed",
// "range": @ParameterC
// }
// ]
// }
// }
// -> textDocument/rename {
// "newName": "Renamed",
// "position": @ParameterCInCall
// }
// <- {
// "changes": {
// "rename/functionCall.sol": [
// {
// "newText": "Renamed",
// "range": @ParameterCInCall
// },
// {
// "newText": "Renamed",
// "range": @ParameterCInFoo
// },
// {
// "newText": "Renamed",
// "range": @ParameterC
// }
// ]
// }
// }
// -> textDocument/rename {
// "newName": "Renamed",
// "position": @ParameterCInFoo
// }
// <- {
// "changes": {
// "rename/functionCall.sol": [
// {
// "newText": "Renamed",
// "range": @ParameterCInCall
// },
// {
// "newText": "Renamed",
// "range": @ParameterCInFoo
// },
// {
// "newText": "Renamed",
// "range": @ParameterC
// }
// ]
// }
// }
// -> textDocument/rename {
// "newName": "Renamed",
// "position": @ParameterBInCall
// }
// <- {
// "changes": {
// "rename/functionCall.sol": [
// {
// "newText": "Renamed",
// "range": @ParameterBInCall
// },
// {
// "newText": "Renamed",
// "range": @ParameterBInFoo
// },
// {
// "newText": "Renamed",
// "range": @ParameterB
// }
// ]
// }
// }
// -> textDocument/rename {
// "newName": "Renamed",
// "position": @ParameterBInFoo
// }
// <- {
// "changes": {
// "rename/functionCall.sol": [
// {
// "newText": "Renamed",
// "range": @ParameterBInCall
// },
// {
// "newText": "Renamed",
// "range": @ParameterBInFoo
// },
// {
// "newText": "Renamed",
// "range": @ParameterB
// }
// ]
// }
// }
@@ -0,0 +1,247 @@
// SPDX-License-Identifier: UNLICENSED
pragma solidity >=0.8.0;
import "./contract.sol" as externalFile;
// ^^^^^^^^^^^^ @FileAliasInImportDirective
// ^ @CursorOnFileAliasInImportDirective
import {ToRename as ExternalContract, User} from "./contract.sol";
// ^^^^^^^^^^^^^^^^ @RenamedContractInImportDirective
// ^ @CursorOnRenamedContractInImportDirective
// ^^^^^^^^ @OriginalNameInImportDirective
// ^ @CursorOnOriginalNameInImportDirective
// ^^^^ @UserInImportDirective
// ^ @CursorOnUserInImportDirective
contract C
{
ExternalContract public externalContract;
// ^^^^^^^^^^^^^^^^ @RenamedContractInPublicVariable
// ^ @CursorOnRenamedContractInPublicVariable
externalFile.ToRename public externalFileContract;
// ^^^^^^^^^^^^ @FileAliasInPublicVariable
// ^ @CursorOnFileAliasInPublicVariable
// ^^^^^^^^ @OriginalNameInPublicVariable
// ^ @CursorOnOriginalNameInPublicVariable
User public externalUserContract;
// ^^^^ @UserInPublicVariable
// ^ @CursorOnUserInPublicVariable
}
// ----
// contract:
// -> textDocument/rename {
// "newName": "Renamed",
// "position": @CursorOnFileAliasInImportDirective
// }
// <- {
// "changes": {
// "rename/import_directive.sol": [
// {
// "newText": "Renamed",
// "range": @FileAliasInPublicVariable
// },
// {
// "newText": "Renamed",
// "range": @FileAliasInImportDirective
// }
// ]
// }
// }
// -> textDocument/rename {
// "newName": "Renamed",
// "position": @CursorOnRenamedContractInImportDirective
// }
// <- {
// "changes": {
// "rename/import_directive.sol": [
// {
// "newText": "Renamed",
// "range": @RenamedContractInPublicVariable
// },
// {
// "newText": "Renamed",
// "range": @RenamedContractInImportDirective
// }
// ]
// }
// }
// -> textDocument/rename {
// "newName": "Renamed",
// "position": @CursorOnOriginalNameInImportDirective
// }
// <- {
// "changes": {
// "rename/contract.sol": [
// {
// "newText": "Renamed",
// "range": @ContractInParameter
// },
// {
// "newText": "Renamed",
// "range": @ContractInReturnExpression
// },
// {
// "newText": "Renamed",
// "range": @ContractInReturnParameter
// },
// {
// "newText": "Renamed",
// "range": @ContractInMapping
// },
// {
// "newText": "Renamed",
// "range": @ContractInArrayType
// },
// {
// "newText": "Renamed",
// "range": @ContractInPublicVariable
// },
// {
// "newText": "Renamed",
// "range": @ContractInDefinition
// }
// ],
// "rename/import_directive.sol": [
// {
// "newText": "Renamed",
// "range": @OriginalNameInPublicVariable
// },
// {
// "newText": "Renamed",
// "range": @OriginalNameInImportDirective
// }
// ]
// }
// }
// -> textDocument/rename {
// "newName": "Renamed",
// "position": @CursorOnRenamedContractInPublicVariable
// }
// <- {
// "changes": {
// "rename/import_directive.sol": [
// {
// "newText": "Renamed",
// "range": @RenamedContractInPublicVariable
// },
// {
// "newText": "Renamed",
// "range": @RenamedContractInImportDirective
// }
// ]
// }
// }
// -> textDocument/rename {
// "newName": "Renamed",
// "position": @CursorOnFileAliasInPublicVariable
// }
// <- {
// "changes": {
// "rename/import_directive.sol": [
// {
// "newText": "Renamed",
// "range": @FileAliasInPublicVariable
// },
// {
// "newText": "Renamed",
// "range": @FileAliasInImportDirective
// }
// ]
// }
// }
// -> textDocument/rename {
// "newName": "Renamed",
// "position": @CursorOnOriginalNameInPublicVariable
// }
// <- {
// "changes": {
// "rename/contract.sol": [
// {
// "newText": "Renamed",
// "range": @ContractInParameter
// },
// {
// "newText": "Renamed",
// "range": @ContractInReturnExpression
// },
// {
// "newText": "Renamed",
// "range": @ContractInReturnParameter
// },
// {
// "newText": "Renamed",
// "range": @ContractInMapping
// },
// {
// "newText": "Renamed",
// "range": @ContractInArrayType
// },
// {
// "newText": "Renamed",
// "range": @ContractInPublicVariable
// },
// {
// "newText": "Renamed",
// "range": @ContractInDefinition
// }
// ],
// "rename/import_directive.sol": [
// {
// "newText": "Renamed",
// "range": @OriginalNameInPublicVariable
// },
// {
// "newText": "Renamed",
// "range": @OriginalNameInImportDirective
// }
// ]
// }
// }
// -> textDocument/rename {
// "newName": "Renamed",
// "position": @CursorOnUserInPublicVariable
// }
// <- {
// "changes": {
// "rename/contract.sol": [
// {
// "newText": "Renamed",
// "range": @UserContractInContractTest
// }
// ],
// "rename/import_directive.sol": [
// {
// "newText": "Renamed",
// "range": @UserInPublicVariable
// },
// {
// "newText": "Renamed",
// "range": @UserInImportDirective
// }
// ]
// }
// }
// -> textDocument/rename {
// "newName": "Renamed",
// "position": @CursorOnUserInImportDirective
// }
// <- {
// "changes": {
// "rename/contract.sol": [
// {
// "newText": "Renamed",
// "range": @UserContractInContractTest
// }
// ],
// "rename/import_directive.sol": [
// {
// "newText": "Renamed",
// "range": @UserInPublicVariable
// },
// {
// "newText": "Renamed",
// "range": @UserInImportDirective
// }
// ]
// }
// }
+132
View File
@@ -0,0 +1,132 @@
// SPDX-License-Identifier: UNLICENSED
pragma solidity >=0.8.0;
contract C
{
int public renameMe;
// ^^^^^^^^ @VariableInDefinition
// ^ @CursorOnVariableDefinition
function foo() public returns(int)
{
renameMe = 1;
// ^^^^^^^^ @VariableInFunction
// ^ @CursorOnVariableInFunction
return this.renameMe();
// ^^^^^^^^ @VariableInGetter
// ^ @CursorOnVariableInGetter
}
}
function freeFunction(C _contract) view returns(int)
{
return _contract.renameMe();
// ^^^^^^^^ @VariableInFreeFunction
// ^ @CursorOnVariableInFreeFunction
}
// ----
// -> textDocument/rename {
// "newName": "Renamed",
// "position": @CursorOnVariableInFunction
// }
// <- {
// "changes": {
// "rename/variable.sol": [
// {
// "newText": "Renamed",
// "range": @VariableInFreeFunction
// },
// {
// "newText": "Renamed",
// "range": @VariableInGetter
// },
// {
// "newText": "Renamed",
// "range": @VariableInFunction
// },
// {
// "newText": "Renamed",
// "range": @VariableInDefinition
// }
// ]
// }
// }
// -> textDocument/rename {
// "newName": "Renamed",
// "position": @CursorOnVariableDefinition
// }
// <- {
// "changes": {
// "rename/variable.sol": [
// {
// "newText": "Renamed",
// "range": @VariableInFreeFunction
// },
// {
// "newText": "Renamed",
// "range": @VariableInGetter
// },
// {
// "newText": "Renamed",
// "range": @VariableInFunction
// },
// {
// "newText": "Renamed",
// "range": @VariableInDefinition
// }
// ]
// }
// }
// -> textDocument/rename {
// "newName": "Renamed",
// "position": @CursorOnVariableInGetter
// }
// <- {
// "changes": {
// "rename/variable.sol": [
// {
// "newText": "Renamed",
// "range": @VariableInFreeFunction
// },
// {
// "newText": "Renamed",
// "range": @VariableInGetter
// },
// {
// "newText": "Renamed",
// "range": @VariableInFunction
// },
// {
// "newText": "Renamed",
// "range": @VariableInDefinition
// }
// ]
// }
// }
// -> textDocument/rename {
// "newName": "Renamed",
// "position": @CursorOnVariableInFreeFunction
// }
// <- {
// "changes": {
// "rename/variable.sol": [
// {
// "newText": "Renamed",
// "range": @VariableInFreeFunction
// },
// {
// "newText": "Renamed",
// "range": @VariableInGetter
// },
// {
// "newText": "Renamed",
// "range": @VariableInFunction
// },
// {
// "newText": "Renamed",
// "range": @VariableInDefinition
// }
// ]
// }
// }