aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorpuffnfresh <none@none>2010-11-16 20:05:51 -0800
committerpuffnfresh <none@none>2010-11-16 20:05:51 -0800
commit776fde26f5f6fc68082513c22d392038379773a8 (patch)
treeba5dfc1e3f6de1169069cae181493822dbe9a74a /src
parent37e5988aae61bfb0806003bb98a6830518fd42b8 (diff)
handle identifiers with quotes and ignore |hidden| +test
Diffstat (limited to 'src')
-rw-r--r--src/analyzer.js2
-rw-r--r--src/intertyper.js12
-rw-r--r--src/parseTools.js2
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) {