Skip to content

Wrong {#if} {:else} with context_overflow (this.context.length > 31) #4263

@warmrobot

Description

@warmrobot

Describe the bug
if directive doesn't work as expected if context_overflow (this.context.length > 31)

To Reproduce
https://svelte.dev/repl/09bca24d4cc940e38b00afe53ad3da51?version=3.17.0

Expected behavior
You should see true two times

Information about your Svelte project:

  • Your browser and the version: (e.x. Chrome 52.1, Firefox 48.0, IE 10)
    FF, Chrome

  • Your operating system: (e.x. OS X 10, Ubuntu Linux 19.10, Windows XP, etc)
    Mac

  • Svelte version (Please check you can reproduce the issue with the latest release!)
    3.17.0

  • Whether your project uses Webpack or Rollup
    both reproduce bug

Severity
blocking an upgrade to Svelte with bitmasks

Additional context
Problem in this check dirty[0] it is falsy

function select_block_type(ctx, dirty) {
    		if (dirty[0] & /*a0*/ 1) show_if = !!(/*arr*/ ctx[1].indexOf(/*a1*/ ctx[2]) && /*a0*/ ctx[0] <= 1);
    	}

May be dirty should be mutidimensional array? Because it is not

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions