Skip to content

Enum values shouldn't be assumed to be pure #683

@ark120202

Description

@ark120202

Input:

let i = 0;
const sideEffect = () => i++;
enum Foo {
    X = sideEffect(),
    Y = X,
}

Current Result:

local i = 0
local sideEffect
sideEffect = function() return (function()
    local ____TS_tmp = i
    i = ____TS_tmp + 1
    return ____TS_tmp
end)() end
Foo = {}
Foo.X = sideEffect(_G)
Foo[sideEffect(_G)] = "X"
Foo.Y = sideEffect(_G)
Foo[sideEffect(_G)] = "Y"

Expected Result:

local i = 0
local sideEffect
sideEffect = function() return (function()
    local ____TS_tmp = i
    i = ____TS_tmp + 1
    return ____TS_tmp
end)() end
Foo = {}
Foo.X = sideEffect(_G)
Foo[Foo.X] = "X"
Foo.Y = Foo.X
Foo[Foo.Y] = "Y"

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