Revert "JS: Add support for Closure modules"

This commit is contained in:
Asger F
2019-02-06 17:30:45 +00:00
committed by GitHub
parent b8be66ec48
commit e46e2b2515
105 changed files with 136 additions and 3529 deletions

View File

@@ -1,22 +0,0 @@
| tests/importFromEs6.js:9:1:9:15 | es6Module.fun() | tests/es6Module.js:3:8:3:24 | function fun() {} | 0 |
| tests/importFromEs6.js:10:1:10:18 | es6ModuleDefault() | tests/es6ModuleDefault.js:3:16:3:28 | function() {} | 0 |
| tests/importFromEs6.js:12:1:12:16 | googModule.fun() | tests/googModule.js:4:6:4:10 | () {} | 0 |
| tests/importFromEs6.js:13:1:13:19 | googModuleDefault() | tests/googModuleDefault.js:3:11:3:27 | function fun() {} | 0 |
| tests/requireFromEs6.js:12:1:12:18 | globalModule.fun() | tests/globalModule.js:4:6:4:10 | () {} | 0 |
| tests/requireFromEs6.js:13:1:13:21 | globalM ... fault() | tests/globalModuleDefault.js:3:23:3:39 | function fun() {} | 0 |
| tests/requireFromEs6.js:15:1:15:15 | es6Module.fun() | tests/es6Module.js:3:8:3:24 | function fun() {} | 0 |
| tests/requireFromEs6.js:16:1:16:18 | es6ModuleDefault() | tests/es6ModuleDefault.js:3:16:3:28 | function() {} | 0 |
| tests/requireFromEs6.js:18:1:18:16 | googModule.fun() | tests/googModule.js:4:6:4:10 | () {} | 0 |
| tests/requireFromEs6.js:19:1:19:19 | googModuleDefault() | tests/googModuleDefault.js:3:11:3:27 | function fun() {} | 0 |
| tests/requireFromGlobalModule.js:10:1:10:18 | x.y.z.global.fun() | tests/globalModule.js:4:6:4:10 | () {} | 0 |
| tests/requireFromGlobalModule.js:11:1:11:21 | x.y.z.g ... fault() | tests/globalModuleDefault.js:3:23:3:39 | function fun() {} | 0 |
| tests/requireFromGlobalModule.js:13:1:13:16 | x.y.z.goog.fun() | tests/googModule.js:4:6:4:10 | () {} | 0 |
| tests/requireFromGlobalModule.js:14:1:14:19 | x.y.z.googdefault() | tests/googModuleDefault.js:3:11:3:27 | function fun() {} | 0 |
| tests/requireFromGlobalModule.js:16:1:16:15 | x.y.z.es6.fun() | tests/es6Module.js:3:8:3:24 | function fun() {} | 0 |
| tests/requireFromGlobalModule.js:17:1:17:18 | x.y.z.es6default() | tests/es6ModuleDefault.js:3:16:3:28 | function() {} | 0 |
| tests/requireFromGoogModule.js:12:1:12:18 | globalModule.fun() | tests/globalModule.js:4:6:4:10 | () {} | 0 |
| tests/requireFromGoogModule.js:13:1:13:21 | globalM ... fault() | tests/globalModuleDefault.js:3:23:3:39 | function fun() {} | 0 |
| tests/requireFromGoogModule.js:15:1:15:15 | es6Module.fun() | tests/es6Module.js:3:8:3:24 | function fun() {} | 0 |
| tests/requireFromGoogModule.js:16:1:16:18 | es6ModuleDefault() | tests/es6ModuleDefault.js:3:16:3:28 | function() {} | 0 |
| tests/requireFromGoogModule.js:18:1:18:16 | googModule.fun() | tests/googModule.js:4:6:4:10 | () {} | 0 |
| tests/requireFromGoogModule.js:19:1:19:19 | googModuleDefault() | tests/googModuleDefault.js:3:11:3:27 | function fun() {} | 0 |

View File

@@ -1,4 +0,0 @@
import javascript
from DataFlow::InvokeNode node, int imprecision
select node, node.getACallee(imprecision), imprecision

View File

@@ -0,0 +1,2 @@
| a.js:1:1:5:1 | <toplevel> |
| b.js:1:1:3:21 | <toplevel> |

View File

@@ -0,0 +1,4 @@
import semmle.javascript.Closure
from ClosureModule cm
select cm

View File

@@ -0,0 +1 @@
| a.js:1:1:5:1 | <toplevel> | a |

View File

@@ -0,0 +1,4 @@
import semmle.javascript.Closure
from ClosureModule cm
select cm, cm.getAProvidedNamespace()

View File

@@ -0,0 +1 @@
| b.js:1:1:3:21 | <toplevel> | a |

View File

@@ -0,0 +1,4 @@
import semmle.javascript.Closure
from ClosureModule cm
select cm, cm.getARequiredNamespace()

View File

@@ -0,0 +1,3 @@
| a.js:1:1:1:17 | goog.provide('a') | provide |
| b.js:1:1:1:17 | goog.require('a') | require |
| c.js:2:1:2:14 | goog.leyness() | leyness |

View File

@@ -0,0 +1,4 @@
import semmle.javascript.Closure
from GoogFunctionCall gfc
select gfc, gfc.getFunctionName()

View File

@@ -0,0 +1 @@
| a.js:1:1:1:18 | goog.provide('a'); | a |

View File

@@ -0,0 +1,4 @@
import semmle.javascript.Closure
from GoogProvide gp
select gp, gp.getNamespaceId()

View File

@@ -0,0 +1 @@
| b.js:1:1:1:18 | goog.require('a'); | a |

View File

@@ -0,0 +1,4 @@
import semmle.javascript.Closure
from GoogRequire gr
select gr, gr.getNamespaceId()

View File

@@ -1,4 +0,0 @@
| tests/es6Module.js:0:0:0:0 | tests/es6Module.js |
| tests/es6ModuleDefault.js:0:0:0:0 | tests/es6ModuleDefault.js |
| tests/importFromEs6.js:0:0:0:0 | tests/importFromEs6.js |
| tests/requireFromEs6.js:0:0:0:0 | tests/requireFromEs6.js |

View File

@@ -1,5 +0,0 @@
import javascript
from TopLevel tl
where tl.isStrict()
select tl.getFile()

View File

@@ -0,0 +1,5 @@
goog.provide('a');
a.foo = function() {
return 42;
}

View File

@@ -0,0 +1,3 @@
goog.require('a');
console.log(a.foo());

View File

@@ -0,0 +1,2 @@
// not a Closure module
goog.leyness();

View File

@@ -1,51 +0,0 @@
| x | tests/globalModule.js:3:1:3:1 | x |
| x | tests/globalModuleDefault.js:3:1:3:1 | x |
| x | tests/requireFromGlobalModule.js:10:1:10:1 | x |
| x | tests/requireFromGlobalModule.js:11:1:11:1 | x |
| x | tests/requireFromGlobalModule.js:13:1:13:1 | x |
| x | tests/requireFromGlobalModule.js:14:1:14:1 | x |
| x | tests/requireFromGlobalModule.js:16:1:16:1 | x |
| x | tests/requireFromGlobalModule.js:17:1:17:1 | x |
| x.y | tests/globalModule.js:3:1:3:3 | x.y |
| x.y | tests/globalModuleDefault.js:3:1:3:3 | x.y |
| x.y | tests/requireFromGlobalModule.js:10:1:10:3 | x.y |
| x.y | tests/requireFromGlobalModule.js:11:1:11:3 | x.y |
| x.y | tests/requireFromGlobalModule.js:13:1:13:3 | x.y |
| x.y | tests/requireFromGlobalModule.js:14:1:14:3 | x.y |
| x.y | tests/requireFromGlobalModule.js:16:1:16:3 | x.y |
| x.y | tests/requireFromGlobalModule.js:17:1:17:3 | x.y |
| x.y.z | tests/globalModule.js:3:1:3:5 | x.y.z |
| x.y.z | tests/globalModuleDefault.js:3:1:3:5 | x.y.z |
| x.y.z | tests/requireFromGlobalModule.js:10:1:10:5 | x.y.z |
| x.y.z | tests/requireFromGlobalModule.js:11:1:11:5 | x.y.z |
| x.y.z | tests/requireFromGlobalModule.js:13:1:13:5 | x.y.z |
| x.y.z | tests/requireFromGlobalModule.js:14:1:14:5 | x.y.z |
| x.y.z | tests/requireFromGlobalModule.js:16:1:16:5 | x.y.z |
| x.y.z | tests/requireFromGlobalModule.js:17:1:17:5 | x.y.z |
| x.y.z.es6 | tests/requireFromEs6.js:6:17:6:41 | goog.re ... z.es6') |
| x.y.z.es6 | tests/requireFromGlobalModule.js:7:1:7:25 | goog.re ... z.es6') |
| x.y.z.es6 | tests/requireFromGlobalModule.js:16:1:16:9 | x.y.z.es6 |
| x.y.z.es6 | tests/requireFromGoogModule.js:6:17:6:41 | goog.re ... z.es6') |
| x.y.z.es6default | tests/requireFromEs6.js:7:24:7:55 | goog.re ... fault') |
| x.y.z.es6default | tests/requireFromGlobalModule.js:8:1:8:32 | goog.re ... fault') |
| x.y.z.es6default | tests/requireFromGlobalModule.js:17:1:17:16 | x.y.z.es6default |
| x.y.z.es6default | tests/requireFromGoogModule.js:7:24:7:55 | goog.re ... fault') |
| x.y.z.global | tests/globalModule.js:3:16:5:1 | {\\n fun() {}\\n} |
| x.y.z.global | tests/requireFromEs6.js:3:20:3:47 | goog.re ... lobal') |
| x.y.z.global | tests/requireFromGlobalModule.js:1:1:1:28 | goog.re ... lobal') |
| x.y.z.global | tests/requireFromGlobalModule.js:10:1:10:12 | x.y.z.global |
| x.y.z.global | tests/requireFromGoogModule.js:3:20:3:47 | goog.re ... lobal') |
| x.y.z.global.fun | tests/globalModule.js:4:6:4:10 | () {} |
| x.y.z.globaldefault | tests/globalModuleDefault.js:3:23:3:39 | function fun() {} |
| x.y.z.globaldefault | tests/requireFromEs6.js:4:27:4:61 | goog.re ... fault') |
| x.y.z.globaldefault | tests/requireFromGlobalModule.js:2:1:2:35 | goog.re ... fault') |
| x.y.z.globaldefault | tests/requireFromGlobalModule.js:11:1:11:19 | x.y.z.globaldefault |
| x.y.z.globaldefault | tests/requireFromGoogModule.js:4:27:4:61 | goog.re ... fault') |
| x.y.z.goog | tests/requireFromEs6.js:9:18:9:43 | goog.re ... .goog') |
| x.y.z.goog | tests/requireFromGlobalModule.js:4:1:4:26 | goog.re ... .goog') |
| x.y.z.goog | tests/requireFromGlobalModule.js:13:1:13:10 | x.y.z.goog |
| x.y.z.goog | tests/requireFromGoogModule.js:9:18:9:43 | goog.re ... .goog') |
| x.y.z.googdefault | tests/requireFromEs6.js:10:25:10:57 | goog.re ... fault') |
| x.y.z.googdefault | tests/requireFromGlobalModule.js:5:1:5:33 | goog.re ... fault') |
| x.y.z.googdefault | tests/requireFromGlobalModule.js:14:1:14:17 | x.y.z.googdefault |
| x.y.z.googdefault | tests/requireFromGoogModule.js:10:25:10:57 | goog.re ... fault') |

View File

@@ -1,4 +0,0 @@
import javascript
from string name
select name, Closure::moduleImport(name)

View File

@@ -1,31 +0,0 @@
| x | y | tests/globalModule.js:3:1:3:3 | x.y |
| x | y | tests/globalModuleDefault.js:3:1:3:3 | x.y |
| x | y | tests/requireFromGlobalModule.js:10:1:10:3 | x.y |
| x | y | tests/requireFromGlobalModule.js:11:1:11:3 | x.y |
| x | y | tests/requireFromGlobalModule.js:13:1:13:3 | x.y |
| x | y | tests/requireFromGlobalModule.js:14:1:14:3 | x.y |
| x | y | tests/requireFromGlobalModule.js:16:1:16:3 | x.y |
| x | y | tests/requireFromGlobalModule.js:17:1:17:3 | x.y |
| x.y | z | tests/globalModule.js:3:1:3:5 | x.y.z |
| x.y | z | tests/globalModuleDefault.js:3:1:3:5 | x.y.z |
| x.y | z | tests/requireFromGlobalModule.js:10:1:10:5 | x.y.z |
| x.y | z | tests/requireFromGlobalModule.js:11:1:11:5 | x.y.z |
| x.y | z | tests/requireFromGlobalModule.js:13:1:13:5 | x.y.z |
| x.y | z | tests/requireFromGlobalModule.js:14:1:14:5 | x.y.z |
| x.y | z | tests/requireFromGlobalModule.js:16:1:16:5 | x.y.z |
| x.y | z | tests/requireFromGlobalModule.js:17:1:17:5 | x.y.z |
| x.y.z | es6 | tests/requireFromGlobalModule.js:16:1:16:9 | x.y.z.es6 |
| x.y.z | es6default | tests/requireFromGlobalModule.js:17:1:17:16 | x.y.z.es6default |
| x.y.z | global | tests/requireFromGlobalModule.js:10:1:10:12 | x.y.z.global |
| x.y.z | globaldefault | tests/requireFromGlobalModule.js:11:1:11:19 | x.y.z.globaldefault |
| x.y.z | goog | tests/requireFromGlobalModule.js:13:1:13:10 | x.y.z.goog |
| x.y.z | googdefault | tests/requireFromGlobalModule.js:14:1:14:17 | x.y.z.googdefault |
| x.y.z.es6 | fun | tests/requireFromEs6.js:15:1:15:13 | es6Module.fun |
| x.y.z.es6 | fun | tests/requireFromGlobalModule.js:16:1:16:13 | x.y.z.es6.fun |
| x.y.z.es6 | fun | tests/requireFromGoogModule.js:15:1:15:13 | es6Module.fun |
| x.y.z.global | fun | tests/requireFromEs6.js:12:1:12:16 | globalModule.fun |
| x.y.z.global | fun | tests/requireFromGlobalModule.js:10:1:10:16 | x.y.z.global.fun |
| x.y.z.global | fun | tests/requireFromGoogModule.js:12:1:12:16 | globalModule.fun |
| x.y.z.goog | fun | tests/requireFromEs6.js:18:1:18:14 | googModule.fun |
| x.y.z.goog | fun | tests/requireFromGlobalModule.js:13:1:13:14 | x.y.z.goog.fun |
| x.y.z.goog | fun | tests/requireFromGoogModule.js:18:1:18:14 | googModule.fun |

View File

@@ -1,4 +0,0 @@
import javascript
from string mod, string name
select mod, name, Closure::moduleMember(mod, name)

View File

@@ -1,3 +0,0 @@
goog.declareModuleId('x.y.z.es6');
export function fun() {}

View File

@@ -1,3 +0,0 @@
goog.declareModuleId('x.y.z.es6default');
export default function() {}

View File

@@ -1,5 +0,0 @@
goog.provide('x.y.z.global');
x.y.z.global = {
fun() {}
};

View File

@@ -1,3 +0,0 @@
goog.provide('x.y.z.globaldefault');
x.y.z.globaldefault = function fun() {}

View File

@@ -1,5 +0,0 @@
goog.module('x.y.z.goog');
exports = {
fun() {}
};

View File

@@ -1,3 +0,0 @@
goog.module('x.y.z.googdefault');
exports = function fun() {};

View File

@@ -1,13 +0,0 @@
// ES6 imports can import files by name, as long as they are modules
import * as googModule from './googModule';
import * as googModuleDefault from './googModuleDefault';
import * as es6Module from './es6Module';
import * as es6ModuleDefault from './es6ModuleDefault';
es6Module.fun();
es6ModuleDefault();
googModule.fun();
googModuleDefault();

View File

@@ -1,19 +0,0 @@
import * as dummy from 'dummy'; // treat as ES6 module
let globalModule = goog.require('x.y.z.global');
let globalModuleDefault = goog.require('x.y.z.globaldefault');
let es6Module = goog.require('x.y.z.es6');
let es6ModuleDefault = goog.require('x.y.z.es6default');
let googModule = goog.require('x.y.z.goog');
let googModuleDefault = goog.require('x.y.z.googdefault');
globalModule.fun();
globalModuleDefault();
es6Module.fun();
es6ModuleDefault();
googModule.fun();
googModuleDefault();

View File

@@ -1,17 +0,0 @@
goog.require('x.y.z.global');
goog.require('x.y.z.globaldefault');
goog.require('x.y.z.goog');
goog.require('x.y.z.googdefault');
goog.require('x.y.z.es6');
goog.require('x.y.z.es6default');
x.y.z.global.fun();
x.y.z.globaldefault();
x.y.z.goog.fun();
x.y.z.googdefault();
x.y.z.es6.fun();
x.y.z.es6default();

View File

@@ -1,19 +0,0 @@
goog.module('test.importer');
let globalModule = goog.require('x.y.z.global');
let globalModuleDefault = goog.require('x.y.z.globaldefault');
let es6Module = goog.require('x.y.z.es6');
let es6ModuleDefault = goog.require('x.y.z.es6default');
let googModule = goog.require('x.y.z.goog');
let googModuleDefault = goog.require('x.y.z.googdefault');
globalModule.fun();
globalModuleDefault();
es6Module.fun();
es6ModuleDefault();
googModule.fun();
googModuleDefault();

View File

@@ -1,3 +0,0 @@
| a.js:5:31:5:31 | o |
| exports.js:3:9:3:15 | exports |
| tst.html:6:3:6:7 | alert |

View File

@@ -1,5 +0,0 @@
import javascript
from VarAccess access
where access.getVariable() instanceof GlobalVariable
select access

View File

@@ -1,2 +1 @@
| exports.js:1:8:1:17 | * as dummy |
| m/c.js:1:8:1:13 | * as b |

View File

@@ -1,7 +1,6 @@
| b.js:1:8:1:8 | f | b.js:1:8:1:8 | f |
| d.js:1:10:1:21 | default as g | d.js:1:21:1:21 | g |
| d.js:1:24:1:29 | x as y | d.js:1:29:1:29 | y |
| exports.js:1:8:1:17 | * as dummy | exports.js:1:13:1:17 | dummy |
| f.ts:1:8:1:8 | g | f.ts:1:8:1:8 | g |
| g.ts:1:9:1:11 | foo | g.ts:1:9:1:11 | foo |
| import-in-mjs.mjs:1:8:1:24 | exported_from_mjs | import-in-mjs.mjs:1:8:1:24 | exported_from_mjs |

View File

@@ -1,7 +1,6 @@
| b.js:1:1:1:20 | import f from './a'; | b.js:1:15:1:19 | './a' | 1 |
| d.js:1:1:1:43 | import ... './a'; | d.js:1:38:1:42 | './a' | 2 |
| d.js:2:1:2:13 | import './b'; | d.js:2:8:2:12 | './b' | 0 |
| exports.js:1:1:1:31 | import ... dummy'; | exports.js:1:24:1:30 | 'dummy' | 1 |
| f.ts:1:1:1:19 | import g from './e' | f.ts:1:15:1:19 | './e' | 1 |
| g.ts:1:1:1:23 | import ... m './f' | g.ts:1:19:1:23 | './f' | 1 |
| import-in-mjs.mjs:1:1:1:46 | import ... n-mjs'; | import-in-mjs.mjs:1:31:1:45 | 'export-in-mjs' | 1 |

View File

@@ -1,4 +0,0 @@
import * as dummy from 'dummy'; // Recognize as ES6 module
let x = exports; // global variable
x.foo();