From 3f80c7b868ef0b3eb0417a607c0b59cd988fcf1f Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Wed, 28 Oct 2020 21:09:51 -0500 Subject: [PATCH] Change size should not round initial size Test based on a project by https://scratch.mit.edu/users/_Fingerprint_/ --- src/compiler/irgen.js | 10 ++-------- src/compiler/jsgen.js | 3 +++ .../tw-change-size-does-not-use-rounded-size.sb3 | Bin 0 -> 3139 bytes 3 files changed, 5 insertions(+), 8 deletions(-) create mode 100644 test/fixtures/execute/tw-change-size-does-not-use-rounded-size.sb3 diff --git a/src/compiler/irgen.js b/src/compiler/irgen.js index efecc28d..ea15d519 100644 --- a/src/compiler/irgen.js +++ b/src/compiler/irgen.js @@ -904,14 +904,8 @@ class ScriptTreeGenerator { case 'looks_changesizeby': return { - kind: 'looks.setSize', - size: { - kind: 'op.add', - left: { - kind: 'looks.size' - }, - right: this.descendInput(block, 'CHANGE') - } + kind: 'looks.changeSize', + size: this.descendInput(block, 'CHANGE') }; case 'looks_cleargraphiceffects': return { diff --git a/src/compiler/jsgen.js b/src/compiler/jsgen.js index 6aa81ab2..75d2eb86 100644 --- a/src/compiler/jsgen.js +++ b/src/compiler/jsgen.js @@ -703,6 +703,9 @@ class JSGenerator { case 'looks.clearEffects': this.source += 'target.clearEffects();\n'; break; + case 'looks.changeSize': + this.source += `target.setSize(target.size + ${this.descendInput(node.size).asNumber()});\n`; + break; case 'looks.forwardLayers': this.source += `target.goForwardLayers(${this.descendInput(node.layers).asNumber()});\n`; break; diff --git a/test/fixtures/execute/tw-change-size-does-not-use-rounded-size.sb3 b/test/fixtures/execute/tw-change-size-does-not-use-rounded-size.sb3 new file mode 100644 index 0000000000000000000000000000000000000000..dfffe493da5164baf9796440f88e11b161230c51 GIT binary patch literal 3139 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