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');