Skip to content

Incorrect output with default exports & circular dependencies #4168

@jakearchibald

Description

@jakearchibald

Rollup Version

2.52.7

Operating System (or Browser)

REPL

Node Version (if applicable)

No response

Link To Reproduction

https://rollupjs.org/repl/?version=2.52.7&shareable=JTdCJTIybW9kdWxlcyUyMiUzQSU1QiU3QiUyMm5hbWUlMjIlM0ElMjJtYWluLmpzJTIyJTJDJTIyY29kZSUyMiUzQSUyMmltcG9ydCUyMGZvbyUyMGZyb20lMjAnLiUyRm1vZHVsZS5qcyclM0IlNUNuJTVDbmZvbygpJTNCJTVDbiU1Q25mdW5jdGlvbiUyMGhlbGxvKCklMjAlN0IlNUNuJTIwJTIwY29uc29sZS5sb2coJ2hlbGxvJyklM0IlNUNuJTdEJTVDbiU1Q25leHBvcnQlMjBkZWZhdWx0JTIwaGVsbG8lM0IlMjIlMkMlMjJpc0VudHJ5JTIyJTNBdHJ1ZSU3RCUyQyU3QiUyMm5hbWUlMjIlM0ElMjJtb2R1bGUuanMlMjIlMkMlMjJjb2RlJTIyJTNBJTIyaW1wb3J0JTIwaGVsbG8lMjBmcm9tJTIwJy4lMkZtYWluLmpzJyUzQiU1Q24lNUNuaGVsbG8oKSUzQiU1Q24lNUNuZnVuY3Rpb24lMjBmb28oKSUyMCU3QiU1Q24lMjAlMjBjb25zb2xlLmxvZygnZm9vJyklM0IlNUNuJTdEJTVDbiU1Q25leHBvcnQlMjBkZWZhdWx0JTIwZm9vJTNCJTIyJTJDJTIyaXNFbnRyeSUyMiUzQWZhbHNlJTdEJTVEJTJDJTIyb3B0aW9ucyUyMiUzQSU3QiUyMmZvcm1hdCUyMiUzQSUyMmVzJTIyJTJDJTIybmFtZSUyMiUzQSUyMm15QnVuZGxlJTIyJTJDJTIyYW1kJTIyJTNBJTdCJTIyaWQlMjIlM0ElMjIlMjIlN0QlMkMlMjJnbG9iYWxzJTIyJTNBJTdCJTdEJTdEJTJDJTIyZXhhbXBsZSUyMiUzQW51bGwlN0Q=

Expected Behaviour

This should result in code that throws because hello is accessed before it's initialised. This is due to how default export whatever is treated as an expression.

The output should be something like:

_helloExport();

function foo() {
  console.log('foo');
}

let _fooExport = foo;

_fooExport();

function hello() {
  console.log('hello');
}

let _helloExport = hello;

export default hello;

Actual Behaviour

Produces runnable code.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions