Skip to content

Unknown opcodes should translate to undefined blocks #1609

Open
@kchadha

Description

@kchadha

Expected Behavior

Blocks with unknown opcodes are skipped when imported into 3.0. These blocks should be translated into 3.0 as no-op undefined blocks so that there is some visual indication that the blocks have been imported but no longer work. More details below.

There should be one undefined catch-all opcode per type of block (e.g. hat blocks, c blocks, e blocks, commands, and reporters).

Actual Behavior

In Scratch 2.0, unknown opcodes and some legacy opcodes get translated to red 'undefined' blocks.

In Scratch 3.0, many of the legacy opcodes have been implemented so that projects containing those blocks from 2.0 or 1.4 still run (see #355).

However, other unknown opcodes (which can occur for a number of reasons -- see below) are skipped (see #1254). Because these blocks are removed from the project without any other user-facing indication that the blocks have been skipped blocks, it may be confusing to the user that the blocks did not import.

Some of the reasons for unknown opcodes are:

  1. hacked blocks
  2. custom procedure calls dragged into the backpack and dragged into a separate project without the associated declaration
  3. legacy opcodes
  4. blocks from extensions that are no longer supported (e.g. LEGO WeDo 1.0)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions