From 4078cde8afcfbf5f21515ba16ed3a136b09a5316 Mon Sep 17 00:00:00 2001 From: Oskar Stark Date: Sat, 13 Sep 2025 10:45:17 +0200 Subject: [PATCH 1/3] Add guideline that changing default values is a BC break --- CLAUDE.md | 1 + contributing/code/bc.rst | 6 ++++++ 2 files changed, 7 insertions(+) create mode 100644 CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 00000000000..04f6317c5f4 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1 @@ +- Always remove trailing whitespace \ No newline at end of file diff --git a/contributing/code/bc.rst b/contributing/code/bc.rst index ee3f72a0333..72068aad1af 100644 --- a/contributing/code/bc.rst +++ b/contributing/code/bc.rst @@ -264,6 +264,7 @@ Add constructor without mandatory arguments Yes Add argument with a default value Yes :ref:`[11] ` Remove argument No :ref:`[3] ` Add default value to an argument Yes +Change default value of an argument No :ref:`[12] ` Remove default value of an argument No Add type hint to an argument No Remove type hint of an argument Yes @@ -490,6 +491,11 @@ code when upgrading to newer Symfony versions. **[11]** Only optional argument(s) of a constructor at last position may be added. +.. _note-12: + +**[12]** Changing a default value is a BC break because it changes the behavior +of existing code that relies on the current default value. + Making Code Changes in a Backward Compatible Way ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From 94cca884c38846525d2977c4d931a7c6fc5a4d0d Mon Sep 17 00:00:00 2001 From: Oskar Stark Date: Sat, 13 Sep 2025 11:29:25 +0200 Subject: [PATCH 2/3] Remove CLAUDE.md file --- CLAUDE.md | 1 - 1 file changed, 1 deletion(-) delete mode 100644 CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md deleted file mode 100644 index 04f6317c5f4..00000000000 --- a/CLAUDE.md +++ /dev/null @@ -1 +0,0 @@ -- Always remove trailing whitespace \ No newline at end of file From d0802a8aec0b363f0ce6b4fbcf3a3f21bfa50a2c Mon Sep 17 00:00:00 2001 From: Oskar Stark Date: Sat, 13 Sep 2025 11:31:37 +0200 Subject: [PATCH 3/3] - --- contributing/code/bc.rst | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/contributing/code/bc.rst b/contributing/code/bc.rst index 72068aad1af..dda6127ec14 100644 --- a/contributing/code/bc.rst +++ b/contributing/code/bc.rst @@ -136,6 +136,10 @@ covered by our backward compatibility promise: +-----------------------------------------------+-----------------------------+ | Add a default value to an argument | Yes | +-----------------------------------------------+-----------------------------+ +| Change default value of an argument | No :ref:`[12] ` | ++-----------------------------------------------+-----------------------------+ +| Remove default value of an argument | No :ref:`[13] ` | ++-----------------------------------------------+-----------------------------+ | Call a private method (via Reflection) | No | +-----------------------------------------------+-----------------------------+ | Access a private property (via Reflection) | No | @@ -211,7 +215,8 @@ Add argument without a default value No Add argument with a default value No Remove argument No :ref:`[3] ` Add default value to an argument No -Remove default value of an argument No +Change default value of an argument No :ref:`[12] ` +Remove default value of an argument No :ref:`[13] ` Add type hint to an argument No Remove type hint of an argument No Change argument type No @@ -265,7 +270,7 @@ Add argument with a default value Yes Remove argument No :ref:`[3] ` Add default value to an argument Yes Change default value of an argument No :ref:`[12] ` -Remove default value of an argument No +Remove default value of an argument No :ref:`[13] ` Add type hint to an argument No Remove type hint of an argument Yes Change argument type No @@ -289,7 +294,7 @@ Move to parent class Yes Rename argument Yes :ref:`[10] ` Remove argument No :ref:`[3] ` Add default value to an argument No :ref:`[7] ` :ref:`[8] ` -Remove default value of an argument No +Remove default value of an argument No :ref:`[13] ` Add type hint to an argument No :ref:`[7] ` :ref:`[8] ` Remove type hint of an argument No :ref:`[7] ` :ref:`[8] ` Change argument type No :ref:`[7] ` :ref:`[8] ` @@ -309,7 +314,7 @@ Move to parent class Yes Rename argument Yes :ref:`[10] ` Remove argument No :ref:`[3] ` Add default value to an argument No :ref:`[7] ` :ref:`[8] ` -Remove default value of an argument No :ref:`[7] ` +Remove default value of an argument No :ref:`[13] ` :ref:`[7] ` Add type hint to an argument No :ref:`[7] ` :ref:`[8] ` Remove type hint of an argument No :ref:`[7] ` :ref:`[8] ` Change argument type No :ref:`[7] ` :ref:`[8] ` @@ -383,7 +388,7 @@ Move to used trait :ref:`Add argument with a default value ` No Remove argument No Add default value to an argument No -Remove default value of an argument No +Remove default value of an argument No :ref:`[13] ` Add type hint to an argument No Remove type hint of an argument No Change argument type No @@ -400,7 +405,7 @@ Move to used trait :ref:`Add argument with a default value ` No Remove argument No Add default value to an argument No -Remove default value of an argument No +Remove default value of an argument No :ref:`[13] ` Add type hint to an argument No Remove type hint of an argument No Change argument type No @@ -415,7 +420,7 @@ Add argument without a default value Add argument with a default value No Remove argument No Add default value to an argument No -Remove default value of an argument No +Remove default value of an argument No :ref:`[13] ` Add type hint to an argument No Remove type hint of an argument No Change argument type No @@ -496,6 +501,11 @@ code when upgrading to newer Symfony versions. **[12]** Changing a default value is a BC break because it changes the behavior of existing code that relies on the current default value. +.. _note-13: + +**[13]** Removing a default value is a BC break because it makes previously +optional arguments required, breaking existing code that doesn't pass all arguments. + Making Code Changes in a Backward Compatible Way ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~