Skip to content

Closures that are modified (like objects) are mistaken for static functions #31

@JobLeonard

Description

@JobLeonard

In general plugin speeds up my code-base quite a bit, but in one crucial part it breaks my (admittedly quite unusual) code: the part where I generates a recursive tree of functions. I found a work-around, but I think this counts as a bug.

The part of the code in question that breaks is this:

//== INPUT
export function vectorOf(patternArr){
	let retVal= function(){};
	retVal.encoder = encodeVector(patternArr);
	retVal.decoder = decodeVector(patternArr);
	return retVal;
}

//== OUTPUT, functionally different:
function _retVal2() {}

function vectorOf(patternArr) {
	var retVal = _retVal2;
	retVal.encoder = encodeVector(patternArr);
	retVal.decoder = decodeVector(patternArr);
	return retVal;
}

(note that I have already removed the fat arrow syntax, but the problem remains)

The problem is that vectorOf should return newly instantiated function object whenever it is called, instead of modifying a static one. I understand that the whole point of this plugin is turn closures into the latter, but the part where I modify the function object breaks that :P

EDIT: my workaround didn't work, turns out I forgot to turn on the closure-elimination plugin while testing.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions