Skip to content

Commit 13438ac

Browse files
remove extension of extension
1 parent 548ee67 commit 13438ac

File tree

8 files changed

+25
-74
lines changed

8 files changed

+25
-74
lines changed

lib/elixir.pb.ex

Lines changed: 0 additions & 6 deletions
This file was deleted.

lib/elixirpb.pb.ex

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,30 +3,16 @@ defmodule Elixirpb.FileOptions do
33
use Protobuf, syntax: :proto2
44

55
@type t :: %__MODULE__{
6-
module_prefix: String.t(),
7-
__pb_extensions__: map
6+
module_prefix: String.t()
87
}
9-
defstruct [:module_prefix, :__pb_extensions__]
8+
defstruct [:module_prefix]
109

1110
field :module_prefix, 1, optional: true, type: :string
12-
13-
extensions [{1000, 536_870_912}]
14-
end
15-
16-
defmodule Elixirpb.FieldOptions do
17-
@moduledoc false
18-
use Protobuf, syntax: :proto2
19-
20-
@type t :: %__MODULE__{__pb_extensions__: map}
21-
defstruct [:__pb_extensions__]
22-
23-
extensions [{1000, 536_870_912}]
2411
end
2512

2613
defmodule Elixirpb.PbExtension do
2714
@moduledoc false
2815
use Protobuf, syntax: :proto2
2916

3017
extend Google.Protobuf.FileOptions, :file, 1047, optional: true, type: Elixirpb.FileOptions
31-
extend Google.Protobuf.FieldOptions, :field, 65007, optional: true, type: Elixirpb.FieldOptions
3218
end

lib/protobuf/extension.ex

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,8 @@ defmodule Protobuf.Extension do
134134
if GlobalStore.get(fnum_key, nil) do
135135
raise "Extension #{inspect(ext.extendee)}##{fnum} already exists"
136136
end
137-
IO.inspect(:stderr, {fnum_key, mod}, label: :extensions)
137+
138+
# IO.inspect(:stderr, {fnum_key, mod}, label: :extensions)
138139

139140
GlobalStore.put(fnum_key, mod)
140141
end)

lib/protobuf/extension/props.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ defmodule Protobuf.Extension.Props do
55
@moduledoc false
66
@type t :: %__MODULE__{
77
extendee: module,
8-
field_props: FieldProps.t
8+
field_props: FieldProps.t()
99
}
1010
defstruct extendee: nil,
1111
field_props: nil

lib/protobuf/message_props.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ defmodule Protobuf.MessageProps do
66
@type t :: %__MODULE__{
77
ordered_tags: [integer],
88
tags_map: %{integer => integer},
9-
field_props: %{integer => FieldProps.t},
9+
field_props: %{integer => FieldProps.t()},
1010
field_tags: %{atom => integer},
1111
repeated_fields: [atom],
1212
embedded_fields: [atom],

lib/protobuf/protoc/generator/message.ex

Lines changed: 9 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,7 @@ defmodule Protobuf.Protoc.Generator.Message do
1111
end
1212

1313
def generate(ctx, desc) do
14-
IO.inspect(:stderr, desc, label: :desc)
15-
1614
msg_struct = parse_desc(ctx, desc)
17-
IO.inspect(:stderr, msg_struct, label: :message_struct)
1815
ctx = %{ctx | namespace: msg_struct[:new_namespace]}
1916
{nested_enums, nested_msgs} = Enum.unzip(gen_nested_msgs(ctx, desc))
2017

@@ -182,7 +179,6 @@ defmodule Protobuf.Protoc.Generator.Message do
182179
end
183180

184181
def get_field(ctx, f, nested_maps, oneofs) do
185-
186182
opts = field_options(f)
187183
map = nested_maps[f.type_name]
188184

@@ -295,32 +291,22 @@ defmodule Protobuf.Protoc.Generator.Message do
295291
end
296292

297293
defp merge_field_options(opts, f) do
298-
field_options =
294+
custom_options =
299295
f.options
300-
|> Google.Protobuf.FieldOptions.get_extension(Elixirpb.PbExtension, :field)
296+
|> Google.Protobuf.FieldOptions.get_extension(Brex.Elixirpb.PbExtension, :field)
301297
|> case do
302-
nil -> nil
298+
nil ->
299+
nil
300+
303301
elixir_field_options ->
304302
elixir_field_options
305-
# strips :__struct__
306303
|> Map.from_struct()
307-
|> Enum.flat_map(&get_custom_field_options/1)
308-
|> case do
309-
[] -> nil
310-
custom_opts -> custom_opts
311-
end
304+
|> Enum.into([])
312305
end
313306

314307
opts
315-
|> Map.put(:packed, f.options.packed)
316-
|> Map.put(:deprecated, f.options.deprecated)
317-
|> Map.put(:options, field_options)
318-
end
319-
320-
def get_custom_field_options({:__pb_extensions__, opts}) do
321-
# For now if you want field options to show up in DSL you havee to extend Elixirpb.FieldOptions.
322-
Enum.map(opts, fn {{_extending_message, field}, arg} -> {field, arg} end)
308+
|> Map.put(:packed, f.options.packed)
309+
|> Map.put(:deprecated, f.options.deprecated)
310+
|> Map.put(:options, custom_options)
323311
end
324-
# Collect existing Elixirpb.FieldOptions (right now no fields though).
325-
def get_custom_field_options({k, v}), do: [{k, v}]
326312
end

src/elixir.proto

Lines changed: 0 additions & 22 deletions
This file was deleted.

test/protobuf/protoc/generator/message_test.exs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -177,11 +177,15 @@ defmodule Protobuf.Protoc.Generator.MessageTest do
177177
ctx = %Context{package: ""}
178178

179179
field_opts = Google.Protobuf.FieldOptions.new()
180-
elixir_opts = Elixirpb.FieldOptions.new()
181-
custom_opts = Elixirpb.FieldOptions.put_extension(elixir_opts, Brex.Elixir.PbExtension, :extype, "String.t")
180+
custom_opts = Brex.Elixirpb.FieldOptions.new(extype: "String.t")
182181

183182
opts =
184-
Google.Protobuf.FieldOptions.put_extension(field_opts, Elixirpb.PbExtension, :field, custom_opts)
183+
Google.Protobuf.FieldOptions.put_extension(
184+
field_opts,
185+
Brex.Elixirpb.PbExtension,
186+
:field,
187+
custom_opts
188+
)
185189

186190
desc =
187191
Google.Protobuf.DescriptorProto.new(
@@ -199,7 +203,9 @@ defmodule Protobuf.Protoc.Generator.MessageTest do
199203
)
200204

201205
{[], [msg]} = Generator.generate(ctx, desc)
202-
assert msg =~ "field :my_string, 1, optional: true, type: :message, options: [extype: \"String.t\"]\n"
206+
207+
assert msg =~
208+
"field :my_string, 1, optional: true, type: :message, options: [extype: \"String.t\"]\n"
203209
end
204210

205211
test "generate/2 supports message type field" do

0 commit comments

Comments
 (0)