diff --git a/packages/babel-core/test/fixtures/plugins/inference-recursion/exec.js b/packages/babel-core/test/fixtures/plugins/inference-recursion/exec.js new file mode 100644 index 0000000000..f643ac27d0 --- /dev/null +++ b/packages/babel-core/test/fixtures/plugins/inference-recursion/exec.js @@ -0,0 +1,57 @@ +var code = (function() { + var kind; + function readObj() { + expect('{'); + if (!skip('}')) { + do { + expect('String'); + expect(':'); + readVal(); + } while (skip(',')); + expect('}'); + } + } + + function expect(str) { + if (kind === str) { + return lex(); + } + throw syntaxError('Expected ' + str + ' but got ' + string.slice(start, end) + '.'); + } + + function readArr() { + expect('['); + if (!skip(']')) { + do { + readVal(); + } while (skip(',')); + expect(']'); + } + } + + function readVal() { + switch (kind) { + case '[': + return readArr(); + case '{': + return readObj(); + case 'String': + return lex(); + default: + return expect('Value'); + } + } +}).toString().split('\n').slice(1, -1).join('\n'); + +transform(code, { + plugins: function (b) { + var t = b.types; + return { + visitor: { + BinaryExpression: function(path) { + path.get("left").baseTypeStrictlyMatches(path.get("right")); + } + } + } + } +});