124 lines
2.0 KiB
JavaScript
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: [],
|
|
},
|
|
]
|