(ast)
| 12051 | }; |
| 12052 | |
| 12053 | function generateMetadata(ast) { |
| 12054 | var globalScope = {}; |
| 12055 | var id, class_; |
| 12056 | for(id in declaredClasses) { |
| 12057 | if(declaredClasses.hasOwnProperty(id)) { |
| 12058 | class_ = declaredClasses[id]; |
| 12059 | var scopeId = class_.scopeId, name = class_.name; |
| 12060 | if(scopeId) { |
| 12061 | var scope = declaredClasses[scopeId]; |
| 12062 | class_.scope = scope; |
| 12063 | if(scope.inScope === undef) { |
| 12064 | scope.inScope = {}; |
| 12065 | } |
| 12066 | scope.inScope[name] = class_; |
| 12067 | } else { |
| 12068 | globalScope[name] = class_; |
| 12069 | } |
| 12070 | } |
| 12071 | } |
| 12072 | |
| 12073 | function findInScopes(class_, name) { |
| 12074 | var parts = name.split('.'); |
| 12075 | var currentScope = class_.scope, found; |
| 12076 | while(currentScope) { |
| 12077 | if(parts[0] in currentScope) { |
| 12078 | found = currentScope[parts[0]]; break; |
| 12079 | } |
| 12080 | currentScope = currentScope.scope; |
| 12081 | } |
| 12082 | if(found === undef) { |
| 12083 | found = globalScope[parts[0]]; |
| 12084 | } |
| 12085 | for(var i=1,l=parts.length;i<l && found;++i) { |
| 12086 | found = found.inScope[parts[i]]; |
| 12087 | } |
| 12088 | return found; |
| 12089 | } |
| 12090 | |
| 12091 | for(id in declaredClasses) { |
| 12092 | if(declaredClasses.hasOwnProperty(id)) { |
| 12093 | class_ = declaredClasses[id]; |
| 12094 | var baseClassName = class_.body.baseClassName; |
| 12095 | if(baseClassName) { |
| 12096 | class_.base = findInScopes(class_, baseClassName); |
| 12097 | } |
| 12098 | } |
| 12099 | } |
| 12100 | } |
| 12101 | |
| 12102 | var transformed = transformMain(); |
| 12103 | generateMetadata(transformed); |
no test coverage detected