flow2schema/tests/scopes.js

124 lines
2.0 KiB
JavaScript

type X = string;
type Y = {
x: X,
};
(function () {
type X = number;
type Y = {
x: X,
};
type Z = string;
function foo() {
type X = boolean;
type Y = {
x: X,
z: Z,
};
}
class Test {
static bar() {
type X = number;
type Y = {
x: X,
z: Z,
};
}
baz() {
type X = string;
type Y = {
x: X,
z: Z,
};
}
}
})();
// ###
[
{
type: 'string',
name: 'X',
namespace: 'scopes',
},
{
type: 'record',
name: 'Y',
namespace: 'scopes',
fields: [{name: 'x', type: 'X'}],
},
{
type: 'double',
name: 'X',
namespace: 'scopes._0',
},
{
type: 'record',
name: 'Y',
namespace: 'scopes._0',
fields: [{name: 'x', type: 'X'}],
},
{
type: 'string',
name: 'Z',
namespace: 'scopes._0',
},
{
type: 'boolean',
name: 'X',
namespace: 'scopes._0._0',
},
{
type: 'record',
name: 'Y',
namespace: 'scopes._0._0',
fields: [
{name: 'x', type: 'X'},
{name: 'z', type: 'scopes._0.Z'},
],
},
{
type: 'double',
name: 'X',
namespace: 'scopes._0._1',
},
{
type: 'record',
name: 'Y',
namespace: 'scopes._0._1',
fields: [
{name: 'x', type: 'X'},
{name: 'z', type: 'scopes._0.Z'},
],
},
{
type: 'string',
name: 'X',
namespace: 'scopes._0._2',
},
{
type: 'record',
name: 'Y',
namespace: 'scopes._0._2',
fields: [
{name: 'x', type: 'X'},
{name: 'z', type: 'scopes._0.Z'},
],
},
{
type: 'record',
name: 'Test',
namespace: 'scopes._0',
fields: [],
},
]