diff options
author | Björn Gustavsson <[email protected]> | 2017-01-13 12:07:06 +0100 |
---|---|---|
committer | GitHub <[email protected]> | 2017-01-13 12:07:06 +0100 |
commit | fa208870c24b7b3cddf3ac0317371b419d1a08d8 (patch) | |
tree | 9c4290a7d6b6902ce68ad18e1358478b2add67ce /lib/compiler/src/core_scan.erl | |
parent | ee3f93aec3f2e8b49e0fa9a84ec4d68b687103c5 (diff) | |
parent | 4efd9935a5618fa6622e33eadb3d6add49ab1089 (diff) | |
download | otp-fa208870c24b7b3cddf3ac0317371b419d1a08d8.tar.gz otp-fa208870c24b7b3cddf3ac0317371b419d1a08d8.tar.bz2 otp-fa208870c24b7b3cddf3ac0317371b419d1a08d8.zip |
Merge pull request #1285 from bjorng/bjorn/compiler/type-specs
Add types and specs for all compiler modules
Diffstat (limited to 'lib/compiler/src/core_scan.erl')
-rw-r--r-- | lib/compiler/src/core_scan.erl | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/lib/compiler/src/core_scan.erl b/lib/compiler/src/core_scan.erl index 11b52f6c5f..15bfc78c8b 100644 --- a/lib/compiler/src/core_scan.erl +++ b/lib/compiler/src/core_scan.erl @@ -49,13 +49,37 @@ -import(lists, [reverse/1]). +-type location() :: integer(). +-type category() :: atom(). +-type symbol() :: atom() | float() | integer() | string(). +-type token() :: {category(), Anno :: location(), symbol()} + | {category(), Anno :: location()}. +-type tokens() :: [token()]. +-type error_description() :: term(). +-type error_info() :: {erl_anno:location(), module(), error_description()}. + %% string([Char]) -> %% string([Char], StartPos) -> %% {ok, [Tok], EndPos} | %% {error, {Pos,core_scan,What}, EndPos} +-spec string(String) -> Return when + String :: string(), + Return :: {'ok', Tokens :: tokens(), EndLocation} + | {'error', ErrorInfo :: error_info(), ErrorLocation}, + EndLocation :: location(), + ErrorLocation :: location(). + string(Cs) -> string(Cs, 1). +-spec string(String, StartLocation) -> Return when + String :: string(), + Return :: {'ok', Tokens :: tokens(), EndLocation} + | {'error', ErrorInfo :: error_info(), ErrorLocation}, + StartLocation :: location(), + EndLocation :: location(), + ErrorLocation :: location(). + string(Cs, Sp) -> %% Add an 'eof' to always get correct handling. case string_pre_scan(Cs, [], Sp) of |