decorator icon indicating copy to clipboard operation
decorator copied to clipboard

Can't use other modules macros while using decorator

Open FrancescoZ opened this issue 5 years ago • 2 comments

While using decorator with Spandex i'm not able to add another use in sequence:

defmodule Fetcher.Info do
  use Spandex.Decorators
  use Interceptor.Annotation

 @intercept true
 @decorate span(type: :backend)
 def retrieve_information(resource_uuid) do
      #mycode
 end
end

Using this code I get the following warning:

warning: this clause cannot match because a previous clause at line 1 always matches
  lib/fetcher/info.ex:1

Could it be useful to insert something like this?

Module.register_attribute __MODULE__, :decorate, accumulate: true

To allow the macros to be used as a list and not overwrite the previous. I think this would also help the #29, what do you think?

FrancescoZ avatar Feb 03 '20 11:02 FrancescoZ

Hmm, have not looked at this for a while; but it seems this register attribute already happens when you use the decorator. So something else must be going on?

arjan avatar Feb 03 '20 15:02 arjan

mmmm from a really superficial analysis it seems that the redefinition of __using__ do not allow other module to do the same. I'm trying to deeper in this direction

FrancescoZ avatar Feb 05 '20 08:02 FrancescoZ