diff options
-rw-r--r-- | src/intertyper.js | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/intertyper.js b/src/intertyper.js index 8b9e4ebf..a3c572a6 100644 --- a/src/intertyper.js +++ b/src/intertyper.js @@ -331,6 +331,8 @@ function intertyper(data, parseFunctions, baseLineNum) { return parseLLVMFunctionCall(segment); } else if (segment[1].type == '{') { return { intertype: 'struct', type: segment[0].text, contents: handleSegments(segment[1].tokens) }; + } else if (segment[1].type == '<') { + return { intertype: 'struct', type: segment[0].text, contents: handleSegments(segment[1].item.tokens[0].tokens) }; } else if (segment[1].type == '[') { return { intertype: 'list', type: segment[0].text, contents: handleSegments(segment[1].item.tokens) }; } else if (segment.length == 2) { @@ -346,6 +348,9 @@ function intertyper(data, parseFunctions, baseLineNum) { }; return splitTokenList(tokens).map(handleSegment); } + if (value.type == '<') { // <{ i8 }> etc. + value = value.item.tokens; + } var contents; if (value.item) { // list of items @@ -419,13 +424,8 @@ function intertyper(data, parseFunctions, baseLineNum) { }); } } else { - if (item.tokens[3].type == '<') { // type <{ i8 }> TODO - check spec - item.tokens[3] = item.tokens[3].item.tokens; - } - if (item.tokens[3].text == 'c') item.tokens.splice(3, 1); - if (item.tokens[3].text in PARSABLE_LLVM_FUNCTIONS) { ret.value = parseLLVMFunctionCall(item.tokens.slice(2)); } else if (!external) { |