Sha256: 4e45cd71664248d9f4c782a1571b8dcdfa0604e632be03a6dc9409078809d62e

Contents?: true

Size: 810 Bytes

Versions: 4

Compression:

Stored size: 810 Bytes

Contents

import Node from '../Node.js';
import { loopStatement } from '../../utils/patterns.js';

export default class ThisExpression extends Node {
	initialise(transforms) {
		if (transforms.arrow) {
			const lexicalBoundary = this.findLexicalBoundary();
			const arrowFunction = this.findNearest('ArrowFunctionExpression');
			const loop = this.findNearest(loopStatement);

			if (
				(arrowFunction && arrowFunction.depth > lexicalBoundary.depth) ||
				(loop &&
					loop.body.contains(this) &&
					loop.depth > lexicalBoundary.depth) ||
				(loop && loop.right && loop.right.contains(this))
			) {
				this.alias = lexicalBoundary.getThisAlias();
			}
		}
	}

	transpile(code) {
		if (this.alias) {
			code.overwrite(this.start, this.end, this.alias, {
				storeName: true,
				contentOnly: true
			});
		}
	}
}

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
jass-0.9.5 vendor/node_modules/buble/src/program/types/ThisExpression.js
jass-0.9.4 vendor/node_modules/buble/src/program/types/ThisExpression.js
jass-0.9.3 vendor/node_modules/buble/src/program/types/ThisExpression.js
jass-0.9.1 vendor/node_modules/buble/src/program/types/ThisExpression.js