@@ -344,7 +344,7 @@ defmodule IEx.Helpers do
344
344
345
345
@ doc false
346
346
def s ( module , function ) when is_atom ( function ) do
347
- specs = lc { { f , _arity } , _spec } = spec inlist Kernel.Typespec . beam_specs ( module ) ,
347
+ specs = lc { { f , _arity } , _spec } = spec inlist beam_specs ( module ) ,
348
348
f == function do
349
349
print_spec ( spec )
350
350
spec
@@ -358,7 +358,7 @@ defmodule IEx.Helpers do
358
358
end
359
359
360
360
def s ( module , [ ] ) do
361
- specs = lc spec inlist Kernel.Typespec . beam_specs ( module ) , do: print_spec ( spec )
361
+ specs = lc spec inlist beam_specs ( module ) , do: print_spec ( spec )
362
362
363
363
if specs == [ ] do
364
364
IO . puts "No specs for #{ inspect module } have been found"
@@ -369,7 +369,7 @@ defmodule IEx.Helpers do
369
369
370
370
@ doc false
371
371
def s ( module , function , arity ) do
372
- spec = List . keyfind ( Kernel.Typespec . beam_specs ( module ) , { function , arity } , 0 )
372
+ spec = List . keyfind ( beam_specs ( module ) , { function , arity } , 0 )
373
373
374
374
if spec do
375
375
print_spec ( spec )
@@ -380,16 +380,22 @@ defmodule IEx.Helpers do
380
380
:ok
381
381
end
382
382
383
+ defp beam_specs ( module ) do
384
+ specs = Enum . map ( Kernel.Typespec . beam_specs ( module ) , { :spec , & 1 } )
385
+ callbacks = Enum . map ( Kernel.Typespec . beam_callbacks ( module ) , { :callback , & 1 } )
386
+ List . concat ( specs , callbacks )
387
+ end
388
+
383
389
defp print_type ( { kind , type } ) do
384
390
ast = Kernel.Typespec . type_to_ast ( type )
385
391
IO . puts "@#{ kind } #{ Macro . to_binary ( ast ) } "
386
392
true
387
393
end
388
394
389
- defp print_spec ( { { name , _arity } , specs } ) do
395
+ defp print_spec ( { kind , { { name , _arity } , specs } } ) do
390
396
Enum . each specs , fn ( spec ) ->
391
397
binary = Macro . to_binary Kernel.Typespec . spec_to_ast ( name , spec )
392
- IO . puts "@spec #{ binary } "
398
+ IO . puts "@#{ kind } #{ binary } "
393
399
end
394
400
true
395
401
end
0 commit comments