diff options
| author | Rowan Goemans <RB.Goemans@student.han.nl> | 2017-11-23 20:35:00 +0100 |
|---|---|---|
| committer | Rowan Goemans <RB.Goemans@student.han.nl> | 2017-11-23 20:35:00 +0100 |
| commit | 66fb321a2399d37960abefaec80548f86fc5e1d4 (patch) | |
| tree | 8f26a09c52726102aa3639ff5c731e0228b8a196 /src | |
| parent | 08445144517d2cd1ac97e737b1bda0e65db6c999 (diff) | |
| download | doxdocgen-66fb321a2399d37960abefaec80548f86fc5e1d4.tar.gz | |
-- Fixed bug where type modifiers like unsigned signed weren't properly recognized.
Diffstat (limited to 'src')
| -rw-r--r-- | src/CodeParser/CParser/CParser.ts | 41 |
1 files changed, 8 insertions, 33 deletions
diff --git a/src/CodeParser/CParser/CParser.ts b/src/CodeParser/CParser/CParser.ts index 6f598ad..b9219c7 100644 --- a/src/CodeParser/CParser/CParser.ts +++ b/src/CodeParser/CParser/CParser.ts @@ -233,18 +233,6 @@ export default class CParser implements ICodeParser { // return argument. const returnArg = this.GetArgument(tree); - // check if it is a constructor or descructor since these have no name.. - // and reverse the assignment of type and name. - if (returnArg.Name === undefined) { - if (returnArg.Type.nodes.length !== 1) { - throw new Error("Too many symbols found for constructor/descructor."); - } else if (returnArg.Type.nodes[0] instanceof ParseTree) { - throw new Error("One node found with just a parsetree. Malformed input."); - } - - returnArg.Name = (returnArg.Type.nodes[0] as Token).Value; - returnArg.Type.nodes = []; - } // Check if return type is a pointer const ptrReturnIndex = returnArg.Type.nodes @@ -424,30 +412,17 @@ export default class CParser implements ICodeParser { private GetDefaultArgument(tree: ParseTree): Argument { const argument: Argument = new Argument(); - for (const node of tree.nodes) { - if (node instanceof ParseTree) { + for (let i = tree.nodes.length - 1; i >= 0; i--) { + const node = tree.nodes[i]; + if (node instanceof Token && node.Type === TokenType.Symbol) { + argument.Name = node.Value; + tree.nodes.splice(i, 1); break; } + } - const symbolCount = argument.Type.nodes - .filter((n) => n instanceof Token) - .map((n) => n as Token) - .filter((n) => n.Type === TokenType.Symbol) - .filter((n) => this.keywords.find((k) => k === n.Value) === undefined) - .length; - - if (node.Type === TokenType.Symbol - && this.keywords.find((k) => k === node.Value) === undefined - ) { - if (symbolCount === 1 && argument.Name === undefined) { - argument.Name = node.Value; - continue; - } else if (symbolCount > 1) { - throw new Error("Too many non keyword symbols."); - } - } - - argument.Type.nodes.push(node); + if (tree.nodes.length > 0) { + argument.Type.nodes = tree.nodes.filter((x) => x instanceof Token); } this.StripNonTypeNodes(argument.Type); |