solidity/test/libsolidity/lsp/goto/goto_definition.sol

208 lines
4.2 KiB
Solidity
Raw Normal View History

2021-12-20 13:10:17 +00:00
// SPDX-License-Identifier: UNLICENSED
pragma solidity >=0.8.0;
import "./lib.sol";
// ^ @importDirective
2021-12-20 13:10:17 +00:00
interface I
{
function f(uint x) external returns (uint);
// ^ @functionF
2021-12-20 13:10:17 +00:00
}
contract IA is I
// ^^ @IASymbol
2021-12-20 13:10:17 +00:00
{
function f(uint x) public pure override returns (uint) { return x + 1; }
}
contract IB is I
{
function f(uint x) public pure override returns (uint) { return x + 2; }
}
library IntLib
{
function add(int self, int b) public pure returns (int) { return self + b; }
// ^^^ @IntLibAdd
2021-12-20 13:10:17 +00:00
}
contract C
{
I obj;
function virtual_inheritance() public payable
{
obj = new IA();
// ^ @usingIASymbol
2021-12-20 13:10:17 +00:00
obj.f(1); // goto-definition should jump to definition of interface.
// ^ @virtualFunctionLookup
2021-12-20 13:10:17 +00:00
}
using IntLib for *;
function using_for(int i) pure public
{
i.add(5);
// ^ @usingIntAdd
2021-12-20 13:10:17 +00:00
14.add(4);
}
function useLib(uint n) public payable returns (uint)
{
return Lib.add(n, 1);
// ^ @LibSymbol
// ^ @LibAddSymbol
2021-12-20 13:10:17 +00:00
}
function enums(Color c) public pure returns (Color d)
// ^ @ColorSymbolInParameter
2021-12-20 13:10:17 +00:00
{
Color e = Color.Red;
// ^ @eVariableDeclaration
// ^ @RedEnumMemberAccess
2021-12-20 13:10:17 +00:00
if (c == e)
// ^ @eVariableAccess
2021-12-20 13:10:17 +00:00
d = Color.Green;
else
d = c;
}
type Price is uint128;
// ^^^^^ @PriceDeclaration
2021-12-20 13:10:17 +00:00
function udlTest() public pure returns (uint128)
{
Price p = Price.wrap(128);
// ^ @PriceSymbol
// ^ @PriceInWrap
2021-12-20 13:10:17 +00:00
return Price.unwrap(p);
}
function structCtorTest(uint8 v) public pure returns (uint8 result)
{
RGBColor memory c = RGBColor(v, 2 * v, 3 * v);
// ^ @RGBColorCursor
2021-12-20 13:10:17 +00:00
result = c.red;
int a;
// ^^^^^ @unusedLocalVar
2021-12-20 13:10:17 +00:00
}
}
// ----
// goto_definition: @unusedLocalVar 2072
// lib: @diagnostics 2072
// -> textDocument/definition {
// "position": @importDirective
// }
// <- [
// {
// "range": {
// "end": {
// "character": 0,
// "line": 0
// },
// "start": {
// "character": 0,
// "line": 0
// }
// },
// "uri": "lib.sol"
// }
// ]
// -> textDocument/definition {
// "position": @usingIASymbol
// }
// <- [
// {
// "range": @IASymbol,
// "uri": "goto_definition.sol"
// }
// ]
// -> textDocument/definition {
// "position": @virtualFunctionLookup
// }
// <- [
// {
// "range": @functionF,
// "uri": "goto_definition.sol"
// }
// ]
// -> textDocument/definition {
// "position": @usingIntAdd
// }
// <- [
// {
// "range": @IntLibAdd,
// "uri": "goto_definition.sol"
// }
// ]
// -> textDocument/definition {
// "position": @LibSymbol
// }
// <- [
// {
// "range": @LibLibrary,
// "uri": "lib.sol"
// }
// ]
// -> textDocument/definition {
// "position": @LibAddSymbol
// }
// <- [
// {
// "range": @addSymbol,
// "uri": "lib.sol"
// }
// ]
// -> textDocument/definition {
// "position": @ColorSymbolInParameter
// }
// <- [
// {
// "range": @ColorEnum,
// "uri": "lib.sol"
// }
// ]
// -> textDocument/definition {
// "position": @RedEnumMemberAccess
// }
// <- [
// {
// "range": @EnumMemberRed,
// "uri": "lib.sol"
// }
// ]
// -> textDocument/definition {
// "position": @eVariableAccess
// }
// <- [
// {
// "range": @eVariableDeclaration,
// "uri": "goto_definition.sol"
// }
// ]
// -> textDocument/definition {
// "position": @PriceSymbol
// }
// <- [
// {
// "range": @PriceDeclaration,
// "uri": "goto_definition.sol"
// }
// ]
// -> textDocument/definition {
// "position": @PriceInWrap
// }
// <- [
// {
// "range": @PriceDeclaration,
// "uri": "goto_definition.sol"
// }
// ]
// -> textDocument/definition {
// "position": @RGBColorCursor
// }
// <- [
// {
// "range": @RGBColorStruct,
// "uri": "lib.sol"
// }
// ]