What is "Success typing" and what does #Dialyzer have to do with it?

Reading through everything I can find, it does sounds like: "well I can't find all the errors, but the ones I do find - those exist".

Does Dialyzer only check for the `@spec` portions of #elixir code? So if I don't include that, my functions won't be checked?

@asteroidrainfall Yes, because it can only assume that args and return values can be anything, which will always succeed. Only once you tell it a function accepts certain types can it tell you if it really does or not.

@IslandUsurper @asteroidrainfall This is not really true. Dialyzer uses pattern matches, guards, and probably other aspects of the code to narrow types, so it can also analyse code that doesn't have any specs. That's how it can tell you your typespec is not matching the inferred types.

AFAIK success typing is basically: I assume you know what you're doing, unless I can really prove you wrong.

@nicd @IslandUsurper @asteroidrainfall still there is no reason not to `@spec` the code. And the tighter we spec, the more info we extract.

PS
success typing ~ gradual typing