diff --git a/blocks/procedures.js b/blocks/procedures.js index 8e652ed39..21afdb7fa 100644 --- a/blocks/procedures.js +++ b/blocks/procedures.js @@ -721,10 +721,10 @@ const PROCEDURE_CALL_COMMON = { if (!mutatorOpen) { this.quarkConnections_ = {}; this.quarkIds_ = null; - } - if (!paramIds) { - // Reset the quarks (a mutator is about to open). - return; + } else { + // fix #6091 - this call could cause an error when outside if-else + // expanding block while mutating prevents another error (ancient fix) + this.setCollapsed(false); } // Test arguments (arrays of strings) for changes. '\n' is not a valid // argument name character, so it is a valid delimiter here. @@ -736,7 +736,6 @@ const PROCEDURE_CALL_COMMON = { if (paramIds.length !== paramNames.length) { throw RangeError('paramNames and paramIds must be the same length.'); } - this.setCollapsed(false); if (!this.quarkIds_) { // Initialize tracking for this block. this.quarkConnections_ = {}; diff --git a/tests/mocha/serializer_test.js b/tests/mocha/serializer_test.js index 85247cc98..9ddb4a90e 100644 --- a/tests/mocha/serializer_test.js +++ b/tests/mocha/serializer_test.js @@ -1674,12 +1674,52 @@ Serializer.Mutations.Procedure.Caller = new SerializerTestCase( '' + '' + ''); +Serializer.Mutations.Procedure.CollapsedProceduresCallreturn = new SerializerTestCase( + 'CollapsedProceduresCallreturn', + '' + + '' + + 'x' + + '' + + '' + + '' + + '' + + '' + + 'do something' + + 'Describe this function...' + + '' + + '' + + '' + + '' + + '' + + '' + + ''); +Serializer.Mutations.Procedure.CollapsedProceduresCallnoreturn = new SerializerTestCase( + 'CollapsedProceduresCallnoreturn', + '' + + '' + + 'x' + + '' + + '' + + '' + + '' + + '' + + 'do something' + + 'Describe this function...' + + '' + + '' + + '' + + '' + + '' + + '' + + ''); Serializer.Mutations.Procedure.testCases = [ Serializer.Mutations.Procedure.NoMutation, Serializer.Mutations.Procedure.Variables, Serializer.Mutations.Procedure.NoStatements, Serializer.Mutations.Procedure.IfReturn, Serializer.Mutations.Procedure.Caller, + Serializer.Mutations.Procedure.CollapsedProceduresCallreturn, + Serializer.Mutations.Procedure.CollapsedProceduresCallnoreturn, ]; Serializer.Mutations.Procedure.Names = new SerializerTestSuite('Names');