diff options
author | puffnfresh <none@none> | 2010-11-16 20:05:51 -0800 |
---|---|---|
committer | puffnfresh <none@none> | 2010-11-16 20:05:51 -0800 |
commit | 776fde26f5f6fc68082513c22d392038379773a8 (patch) | |
tree | ba5dfc1e3f6de1169069cae181493822dbe9a74a /src | |
parent | 37e5988aae61bfb0806003bb98a6830518fd42b8 (diff) |
handle identifiers with quotes and ignore |hidden| +test
Diffstat (limited to 'src')
-rw-r--r-- | src/analyzer.js | 2 | ||||
-rw-r--r-- | src/intertyper.js | 12 | ||||
-rw-r--r-- | src/parseTools.js | 2 |
3 files changed, 10 insertions, 6 deletions
diff --git a/src/analyzer.js b/src/analyzer.js index 1b46a076..494355c5 100644 --- a/src/analyzer.js +++ b/src/analyzer.js @@ -87,7 +87,7 @@ function analyzer(data, givenTypes) { function addType(type, data) { if (type.length == 1) return; if (data.types[type]) return; - if (['internal', 'inbounds', 'void'].indexOf(type) != -1) return; + if (['internal', 'hidden', 'inbounds', 'void'].indexOf(type) != -1) return; if (Runtime.isNumberType(type)) return; // 'blocks': [14 x %struct.X] etc. If this is a pointer, we need diff --git a/src/intertyper.js b/src/intertyper.js index 6b52d5c7..932acbe5 100644 --- a/src/intertyper.js +++ b/src/intertyper.js @@ -162,8 +162,12 @@ function intertyper(data, parseFunctions) { case '"': if (totalEnclosing == 0) { if (quotes == 0) { - makeToken(curr); - curr = '"'; + if (curr == '@' || curr == '%') { + curr += '"'; + } else { + makeToken(curr); + curr = '"'; + } } else { makeToken(curr + '"'); curr = ''; @@ -328,7 +332,7 @@ function intertyper(data, parseFunctions) { } else { // variable var ident = item.tokens[0].text; - while (item.tokens[2].text in set('private', 'constant', 'appending', 'global', 'weak_odr', 'internal', 'linkonce', 'linkonce_odr', 'weak')) + while (item.tokens[2].text in set('private', 'constant', 'appending', 'global', 'weak_odr', 'internal', 'linkonce', 'linkonce_odr', 'weak', 'hidden')) item.tokens.splice(2, 1); var ret = { __result__: true, @@ -366,7 +370,7 @@ function intertyper(data, parseFunctions) { funcHeader = substrate.addZyme('FuncHeader', { processItem: function(item) { item.tokens = item.tokens.filter(function(token) { - return ['noalias', 'available_externally', 'weak', 'internal', 'signext', 'zeroext', 'nounwind', 'define', 'linkonce_odr', 'inlinehint', '{', 'fastcc'].indexOf(token.text) == -1; + return ['noalias', 'available_externally', 'weak', 'internal', 'hidden', 'signext', 'zeroext', 'nounwind', 'define', 'linkonce_odr', 'inlinehint', '{', 'fastcc'].indexOf(token.text) == -1; }); var ret = [{ __result__: true, diff --git a/src/parseTools.js b/src/parseTools.js index 542f97dd..1901b3fc 100644 --- a/src/parseTools.js +++ b/src/parseTools.js @@ -56,7 +56,7 @@ function toNiceIdent(ident) { assert(ident); if (parseFloat(ident) == ident) return ident; if (ident == 'null') return '0'; // see parseNumerical - return ident.replace(/[" \.@%:<>,\*\[\]-]/g, '_'); + return ident.replace(/["\\ \.@%:<>,\*\[\]-]/g, '_'); } function isStructPointerType(type) { |