diff --git a/samples/simple.sol b/samples/simple.sol index e8dc35c..bd12cee 100644 --- a/samples/simple.sol +++ b/samples/simple.sol @@ -8,7 +8,13 @@ import "./abc.sol" as x; import * as y from "./abc.sol"; import {a as b, c as d, f} from "./abc.sol"; -contract SimpleAuction { +contract Parent { + function saySomething(string calldata text) external pure returns (string memory) { + return text; + } +} + +contract SimpleAuction is Parent { // Parameters of the auction. Times are either // absolute unix timestamps (seconds since 1970-01-01) // or time periods in seconds. @@ -117,6 +123,10 @@ contract SimpleAuction { return true; } + function saySomething(string calldata text) external pure override returns (string memory) { + return text; + } + modifier loli () { } diff --git a/solidity_parser/parser.py b/solidity_parser/parser.py index 10fb82f..d31925a 100644 --- a/solidity_parser/parser.py +++ b/solidity_parser/parser.py @@ -55,7 +55,7 @@ def _mapCommasToNulls(self, children): values = [] comma = True - for el in children: + for el in children: if comma: if el.getText() == ',': values.append(None) @@ -166,7 +166,7 @@ def visitContractPart(self, ctx: SolidityParser.ContractPartContext): def visitFunctionDefinition(self, ctx: SolidityParser.FunctionDefinitionContext): - isConstructor = isFallback =isReceive = False + isConstructor = isFallback = isReceive = isOverride = False fd = ctx.functionDescriptor() if fd.ConstructorKeyword(): @@ -181,7 +181,7 @@ def visitFunctionDefinition(self, ctx: SolidityParser.FunctionDefinitionContext) elif fd.identifier(): name = fd.identifier().getText() else: - name = ctx.getText() + name = ctx.getText() parameters = self.visit(ctx.parameterList()) returnParameters = self.visit(ctx.returnParameters()) if ctx.returnParameters() else [] @@ -204,6 +204,9 @@ def visitFunctionDefinition(self, ctx: SolidityParser.FunctionDefinitionContext) else: stateMutability = None + if ctx.modifierList().overrideSpecifier(): + isOverride = True + return Node(ctx=ctx, type="FunctionDefinition", name=name, @@ -215,6 +218,7 @@ def visitFunctionDefinition(self, ctx: SolidityParser.FunctionDefinitionContext) isConstructor=isConstructor, isFallback=isFallback, isReceive=isReceive, + isOverride=isOverride, stateMutability=stateMutability) def visitReturnParameters(self, ctx: SolidityParser.ReturnParametersContext):