Skip to content

Commit b0bab5b

Browse files
committed
Remove deprecated slot props for, name and ìndex
1 parent 4e8cc9f commit b0bab5b

File tree

2 files changed

+4
-100
lines changed

2 files changed

+4
-100
lines changed

lib/surface/compiler.ex

Lines changed: 2 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ defmodule Surface.Compiler do
4343
Surface.Directive.For
4444
]
4545

46-
@valid_slot_props [:root, "for", "name", "index", "generator_value", "context_put"]
46+
@valid_slot_props [:root, "generator_value", "context_put"]
4747

4848
@directive_prefixes [":", "s-"]
4949

@@ -1523,67 +1523,6 @@ defmodule Surface.Compiler do
15231523
Enum.each(attrs, &validate_slot_attr!(&1, caller))
15241524
end
15251525

1526-
defp validate_slot_attr!({"for", value, _meta}, caller) do
1527-
{:attribute_expr, expr, expr_meta} = value
1528-
1529-
message = """
1530-
property `for` has been deprecated. Please use the root prop instead. Examples:
1531-
1532-
Rendering the slot:
1533-
1534-
<#slot {#{expr}}/>
1535-
1536-
Iterating over the slot items:
1537-
1538-
{#for item <- #{expr}}
1539-
<#slot {item}/>
1540-
{/for}
1541-
"""
1542-
1543-
Surface.IOHelper.warn(message, caller, expr_meta.line)
1544-
:ok
1545-
end
1546-
1547-
defp validate_slot_attr!({"name", value, meta}, caller) do
1548-
message = """
1549-
properties `name` and `index` have been deprecated. Please use root prop instead. Examples:
1550-
1551-
Rendering the slot:
1552-
1553-
<#slot {@#{value}}/>
1554-
1555-
Iterating over the slot items:
1556-
1557-
{#for item <- @#{value}}
1558-
<#slot {item}/>
1559-
{/for}
1560-
"""
1561-
1562-
Surface.IOHelper.warn(message, caller, meta.line)
1563-
1564-
:ok
1565-
end
1566-
1567-
defp validate_slot_attr!({"index", _value, meta}, caller) do
1568-
message = """
1569-
properties `name` and `index` have been deprecated. Please use root prop instead. Examples:
1570-
1571-
Rendering the slot:
1572-
1573-
<#slot {@slot_name}/>
1574-
1575-
Iterating over the slot items:
1576-
1577-
{#for item <- @slot_name}
1578-
<#slot {item}/>
1579-
{/for}
1580-
"""
1581-
1582-
Surface.IOHelper.warn(message, caller, meta.line)
1583-
1584-
:ok
1585-
end
1586-
15871526
defp validate_slot_attr!({name, _, _meta}, _caller) when name in @valid_slot_props do
15881527
:ok
15891528
end
@@ -1598,7 +1537,7 @@ defmodule Surface.Compiler do
15981537
message = """
15991538
invalid #{type} `#{name}` for <#slot>.
16001539
1601-
Slots only accept the root prop, `for`, `name`, `index`, `generator_value`, `:if` and `:for`.
1540+
Slots only accept the root prop, `generator_value`, `:if` and `:for`.
16021541
"""
16031542

16041543
IOHelper.compile_error(message, file, line)

test/surface/integrations/slot_test.exs

Lines changed: 2 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1536,7 +1536,7 @@ defmodule Surface.SlotSyncTest do
15361536
message = ~r"""
15371537
code:10: invalid directive `:attrs` for <#slot>.
15381538
1539-
Slots only accept the root prop, `for`, `name`, `index`, `generator_value`, `:if` and `:for`.
1539+
Slots only accept the root prop, `generator_value`, `:if` and `:for`.
15401540
"""
15411541

15421542
assert_raise(CompileError, message, fn ->
@@ -1567,7 +1567,7 @@ defmodule Surface.SlotSyncTest do
15671567
message = ~r"""
15681568
code:11: invalid attribute `let` for <#slot>.
15691569
1570-
Slots only accept the root prop, `for`, `name`, `index`, `generator_value`, `:if` and `:for`.
1570+
Slots only accept the root prop, `generator_value`, `:if` and `:for`.
15711571
"""
15721572

15731573
assert_raise(CompileError, message, fn ->
@@ -1637,41 +1637,6 @@ defmodule Surface.SlotSyncTest do
16371637
end)
16381638
end
16391639

1640-
test "outputs compile warning when using deprecated for property" do
1641-
component_code = """
1642-
defmodule UsingDeprecatedArgsOption do
1643-
use Surface.Component
1644-
1645-
slot default
1646-
1647-
def render(assigns) do
1648-
~F"\""
1649-
<#slot for={@default} />
1650-
"\""
1651-
end
1652-
end
1653-
"""
1654-
1655-
output =
1656-
capture_io(:standard_error, fn ->
1657-
{{:module, _, _, _}, _} = Code.eval_string(component_code, [], %{__ENV__ | file: "code.exs", line: 1})
1658-
end)
1659-
1660-
assert output =~ """
1661-
property `for` has been deprecated. Please use the root prop instead. Examples:
1662-
1663-
Rendering the slot:
1664-
1665-
<#slot {@default}/>
1666-
1667-
Iterating over the slot items:
1668-
1669-
{#for item <- @default}
1670-
<#slot {item}/>
1671-
{/for}
1672-
"""
1673-
end
1674-
16751640
test "outputs compile warning when adding arg attribute to the default slot in a slotable component" do
16761641
component_code = """
16771642
defmodule ColumnWithRenderAndSlotArg do

0 commit comments

Comments
 (0)