summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/Lang/Cpp/CppParser.ts11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/Lang/Cpp/CppParser.ts b/src/Lang/Cpp/CppParser.ts
index fcbdbe0..de0ecc5 100644
--- a/src/Lang/Cpp/CppParser.ts
+++ b/src/Lang/Cpp/CppParser.ts
@@ -327,6 +327,12 @@ export default class CppParser implements ICodeParser {
}
private GetReturnAndArgs(line: string): [CppArgument, CppArgument[]] {
+ if (this.GetArgumentFromCastOperator(line) !== null) {
+ const opFunc = new CppArgument();
+ opFunc.name = this.GetArgumentFromCastOperator(line)[1];
+ opFunc.type.nodes.push(new CppToken(CppTokenType.Symbol, opFunc.name));
+ return [opFunc, []];
+ }
// CppTokenize rest of expression and remove comment CppTokens;
const CppTokens: CppToken[] = this.Tokenize(line)
.filter((t) => t.type !== CppTokenType.CommentBlock)
@@ -421,6 +427,11 @@ export default class CppParser implements ICodeParser {
});
}
+ private GetArgumentFromCastOperator(line: string) {
+ const copy = line;
+ return copy.match("[explicit|\\s]*\\s*operator\\s*([a-zA-Z].*)\\(\\).*");
+ }
+
private GetArgumentFromTrailingReturn(tree: CppParseTree, startTrailingReturn: number): CppArgument {
const argument: CppArgument = new CppArgument();