Skip to content

Commit 7674d96

Browse files
committed
Merge branch 'release/0.1.3'
2 parents c11d6bb + c2419e6 commit 7674d96

File tree

5 files changed

+13
-3
lines changed

5 files changed

+13
-3
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
# Changelog
22

3+
## v0.1.3
4+
5+
* Fix a bug where fields with `default: false` where still enforced when setting
6+
`enforce: true` at top-level
7+
38
## v0.1.2
49

510
* Add the ability to enforce keys by default (#6)

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ Thanks to TypedStruct, this is now possible :)
8181
To use TypedStruct in your project, add this to your Mix dependencies:
8282

8383
```elixir
84-
{:typed_struct, "~> 0.1.2"}
84+
{:typed_struct, "~> 0.1.3"}
8585
```
8686

8787
If you do not plan to compile modules using TypedStruct at runtime, you can add

lib/typed_struct.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -356,7 +356,7 @@ defmodule TypedStruct do
356356

357357
enforce? =
358358
if is_nil(opts[:enforce]),
359-
do: Module.get_attribute(mod, :enforce?) && !default,
359+
do: Module.get_attribute(mod, :enforce?) && is_nil(default),
360360
else: !!opts[:enforce]
361361

362362
nullable? = !default && !enforce?

mix.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
defmodule TypedStruct.MixProject do
22
use Mix.Project
33

4-
@version "0.1.2"
4+
@version "0.1.3"
55
@repo_url "https://github.com/ejpcmac/typed_struct"
66

77
def project do

test/typed_struct_test.exs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ defmodule TypedStructTest do
2323
field :enforced_by_default, term()
2424
field :not_enforced, term(), enforce: false
2525
field :with_default, integer(), default: 1
26+
field :with_false_default, boolean(), default: false
2627
end
2728

2829
def enforce_keys, do: @enforce_keys
@@ -57,6 +58,10 @@ defmodule TypedStructTest do
5758
refute :with_default in EnforcedTypedStruct.enforce_keys()
5859
end
5960

61+
test "does not enforce keys for fields with a default value set to `false`" do
62+
refute :with_false_default in EnforcedTypedStruct.enforce_keys()
63+
end
64+
6065
test "generates a type for the struct" do
6166
# Define a second struct with the type expected for TestStruct.
6267
{:module, _name, bytecode2, _exports} =

0 commit comments

Comments
 (0)