mirror of
https://github.com/github/codeql.git
synced 2026-04-29 10:45:15 +02:00
JS: support imports/exports for closure library code
This commit is contained in:
22
javascript/ql/test/library-tests/Closure/CallGraph.expected
Normal file
22
javascript/ql/test/library-tests/Closure/CallGraph.expected
Normal file
@@ -0,0 +1,22 @@
|
||||
| tests/importFromEs6.js:9:1:9:15 | es6Module.fun() | tests/es6Module.js:3:8:3:24 | function fun() {} |
|
||||
| tests/importFromEs6.js:10:1:10:18 | es6ModuleDefault() | tests/es6ModuleDefault.js:3:16:3:28 | function() {} |
|
||||
| tests/importFromEs6.js:12:1:12:16 | googModule.fun() | tests/googModule.js:4:6:4:10 | () {} |
|
||||
| tests/importFromEs6.js:13:1:13:19 | googModuleDefault() | tests/googModuleDefault.js:3:11:3:27 | function fun() {} |
|
||||
| tests/requireFromEs6.js:12:1:12:18 | globalModule.fun() | tests/globalModule.js:4:6:4:10 | () {} |
|
||||
| tests/requireFromEs6.js:13:1:13:21 | globalM ... fault() | tests/globalModuleDefault.js:3:23:3:39 | function fun() {} |
|
||||
| tests/requireFromEs6.js:15:1:15:15 | es6Module.fun() | tests/es6Module.js:3:8:3:24 | function fun() {} |
|
||||
| tests/requireFromEs6.js:16:1:16:18 | es6ModuleDefault() | tests/es6ModuleDefault.js:3:16:3:28 | function() {} |
|
||||
| tests/requireFromEs6.js:18:1:18:16 | googModule.fun() | tests/googModule.js:4:6:4:10 | () {} |
|
||||
| tests/requireFromEs6.js:19:1:19:19 | googModuleDefault() | tests/googModuleDefault.js:3:11:3:27 | function fun() {} |
|
||||
| tests/requireFromGlobalModule.js:10:1:10:18 | x.y.z.global.fun() | tests/globalModule.js:4:6:4:10 | () {} |
|
||||
| tests/requireFromGlobalModule.js:11:1:11:21 | x.y.z.g ... fault() | tests/globalModuleDefault.js:3:23:3:39 | function fun() {} |
|
||||
| tests/requireFromGlobalModule.js:13:1:13:16 | x.y.z.goog.fun() | tests/googModule.js:4:6:4:10 | () {} |
|
||||
| tests/requireFromGlobalModule.js:14:1:14:19 | x.y.z.googdefault() | tests/googModuleDefault.js:3:11:3:27 | function fun() {} |
|
||||
| tests/requireFromGlobalModule.js:16:1:16:15 | x.y.z.es6.fun() | tests/es6Module.js:3:8:3:24 | function fun() {} |
|
||||
| tests/requireFromGlobalModule.js:17:1:17:18 | x.y.z.es6default() | tests/es6ModuleDefault.js:3:16:3:28 | function() {} |
|
||||
| tests/requireFromGoogModule.js:12:1:12:18 | globalModule.fun() | tests/globalModule.js:4:6:4:10 | () {} |
|
||||
| tests/requireFromGoogModule.js:13:1:13:21 | globalM ... fault() | tests/globalModuleDefault.js:3:23:3:39 | function fun() {} |
|
||||
| tests/requireFromGoogModule.js:15:1:15:15 | es6Module.fun() | tests/es6Module.js:3:8:3:24 | function fun() {} |
|
||||
| tests/requireFromGoogModule.js:16:1:16:18 | es6ModuleDefault() | tests/es6ModuleDefault.js:3:16:3:28 | function() {} |
|
||||
| tests/requireFromGoogModule.js:18:1:18:16 | googModule.fun() | tests/googModule.js:4:6:4:10 | () {} |
|
||||
| tests/requireFromGoogModule.js:19:1:19:19 | googModuleDefault() | tests/googModuleDefault.js:3:11:3:27 | function fun() {} |
|
||||
4
javascript/ql/test/library-tests/Closure/CallGraph.ql
Normal file
4
javascript/ql/test/library-tests/Closure/CallGraph.ql
Normal file
@@ -0,0 +1,4 @@
|
||||
import javascript
|
||||
|
||||
from DataFlow::InvokeNode node
|
||||
select node, node.getACallee()
|
||||
@@ -1,2 +0,0 @@
|
||||
| a.js:1:1:5:1 | <toplevel> |
|
||||
| b.js:1:1:3:21 | <toplevel> |
|
||||
@@ -1,4 +0,0 @@
|
||||
import semmle.javascript.Closure
|
||||
|
||||
from ClosureModule cm
|
||||
select cm
|
||||
@@ -1 +0,0 @@
|
||||
| a.js:1:1:5:1 | <toplevel> | a |
|
||||
@@ -1,4 +0,0 @@
|
||||
import semmle.javascript.Closure
|
||||
|
||||
from ClosureModule cm
|
||||
select cm, cm.getAProvidedNamespace()
|
||||
@@ -1 +0,0 @@
|
||||
| b.js:1:1:3:21 | <toplevel> | a |
|
||||
@@ -1,4 +0,0 @@
|
||||
import semmle.javascript.Closure
|
||||
|
||||
from ClosureModule cm
|
||||
select cm, cm.getARequiredNamespace()
|
||||
@@ -1,3 +0,0 @@
|
||||
| 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 |
|
||||
@@ -1,4 +0,0 @@
|
||||
import semmle.javascript.Closure
|
||||
|
||||
from GoogFunctionCall gfc
|
||||
select gfc, gfc.getFunctionName()
|
||||
@@ -1 +0,0 @@
|
||||
| a.js:1:1:1:18 | goog.provide('a'); | a |
|
||||
@@ -1,4 +0,0 @@
|
||||
import semmle.javascript.Closure
|
||||
|
||||
from GoogProvide gp
|
||||
select gp, gp.getNamespaceId()
|
||||
@@ -1 +0,0 @@
|
||||
| b.js:1:1:1:18 | goog.require('a'); | a |
|
||||
@@ -1,4 +0,0 @@
|
||||
import semmle.javascript.Closure
|
||||
|
||||
from GoogRequire gr
|
||||
select gr, gr.getNamespaceId()
|
||||
@@ -1,5 +0,0 @@
|
||||
goog.provide('a');
|
||||
|
||||
a.foo = function() {
|
||||
return 42;
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
goog.require('a');
|
||||
|
||||
console.log(a.foo());
|
||||
@@ -1,2 +0,0 @@
|
||||
// not a Closure module
|
||||
goog.leyness();
|
||||
@@ -0,0 +1,3 @@
|
||||
goog.declareModuleId('x.y.z.es6');
|
||||
|
||||
export function fun() {}
|
||||
@@ -0,0 +1,3 @@
|
||||
goog.declareModuleId('x.y.z.es6default');
|
||||
|
||||
export default function() {}
|
||||
@@ -0,0 +1,5 @@
|
||||
goog.provide('x.y.z.global');
|
||||
|
||||
x.y.z.global = {
|
||||
fun() {}
|
||||
};
|
||||
@@ -0,0 +1,3 @@
|
||||
goog.provide('x.y.z.globaldefault');
|
||||
|
||||
x.y.z.globaldefault = function fun() {}
|
||||
@@ -0,0 +1,5 @@
|
||||
goog.module('x.y.z.goog');
|
||||
|
||||
exports = {
|
||||
fun() {}
|
||||
};
|
||||
@@ -0,0 +1,3 @@
|
||||
goog.module('x.y.z.googdefault');
|
||||
|
||||
exports = function fun() {};
|
||||
@@ -0,0 +1,13 @@
|
||||
// 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();
|
||||
@@ -0,0 +1,19 @@
|
||||
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();
|
||||
@@ -0,0 +1,17 @@
|
||||
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();
|
||||
@@ -0,0 +1,19 @@
|
||||
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();
|
||||
Reference in New Issue
Block a user