aboutsummaryrefslogtreecommitdiffstats
path: root/lib/compiler/src/core_scan.erl
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2017-01-13 12:07:06 +0100
committerGitHub <[email protected]>2017-01-13 12:07:06 +0100
commitfa208870c24b7b3cddf3ac0317371b419d1a08d8 (patch)
tree9c4290a7d6b6902ce68ad18e1358478b2add67ce /lib/compiler/src/core_scan.erl
parentee3f93aec3f2e8b49e0fa9a84ec4d68b687103c5 (diff)
parent4efd9935a5618fa6622e33eadb3d6add49ab1089 (diff)
downloadotp-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.erl24
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