From 273ce47561583c68101dd15a028689e9dc6a785e Mon Sep 17 00:00:00 2001 From: Mikael Pettersson Date: Tue, 3 Dec 2019 18:53:58 +0100 Subject: [PATCH] as: scan_state: replace filename/1 and linenr/1 with location/1 --- erlang/apps/as/src/input.erl | 3 +-- erlang/apps/as/src/parse.erl | 3 +-- erlang/apps/as/src/scan.erl | 3 +-- erlang/apps/as/src/scan_state.erl | 20 +++++++------------- 4 files changed, 10 insertions(+), 19 deletions(-) diff --git a/erlang/apps/as/src/input.erl b/erlang/apps/as/src/input.erl index 51ce550..ce0b1f4 100644 --- a/erlang/apps/as/src/input.erl +++ b/erlang/apps/as/src/input.erl @@ -271,8 +271,7 @@ section_dot_text() -> % ".text" %% Error reporting ------------------------------------------------------------- fmterr(ScanState, Fmt, Args) -> - {ok, FileName} = scan_state:filename(ScanState), - {ok, LineNr} = scan_state:linenr(ScanState), + {ok, {FileName, LineNr}} = scan_state:location(ScanState), {error, {?MODULE, {FileName, LineNr, Fmt, Args}}}. -spec format_error(term()) -> io_lib:chars(). diff --git a/erlang/apps/as/src/parse.erl b/erlang/apps/as/src/parse.erl index cdd5779..474a663 100644 --- a/erlang/apps/as/src/parse.erl +++ b/erlang/apps/as/src/parse.erl @@ -351,8 +351,7 @@ badtok(ScanState, ErrMsg, {ok, Token}) -> fmterr(ScanState, ErrMsg ++ "; current token is ~s", [token:format(Token)]). fmterr(ScanState, Fmt, Args) -> - {ok, FileName} = scan_state:filename(ScanState), - {ok, LineNr} = scan_state:linenr(ScanState), + {ok, {FileName, LineNr}} = scan_state:location(ScanState), {error, {?MODULE, {FileName, LineNr, Fmt, Args}}}. -spec format_error(term()) -> io_lib:chars(). diff --git a/erlang/apps/as/src/scan.erl b/erlang/apps/as/src/scan.erl index 0cfc431..e58b98f 100644 --- a/erlang/apps/as/src/scan.erl +++ b/erlang/apps/as/src/scan.erl @@ -225,8 +225,7 @@ chval(Ch) -> end. badchar(ScanState, Ch, Context) -> - {ok, FileName} = scan_state:filename(ScanState), - {ok, LineNr} = scan_state:linenr(ScanState), + {ok, {FileName, LineNr}} = scan_state:location(ScanState), {error, {?MODULE, {FileName, LineNr, Ch, Context}}}. -spec format_error(term()) -> io_lib:chars(). diff --git a/erlang/apps/as/src/scan_state.erl b/erlang/apps/as/src/scan_state.erl index 4814984..ff34255 100644 --- a/erlang/apps/as/src/scan_state.erl +++ b/erlang/apps/as/src/scan_state.erl @@ -29,8 +29,7 @@ , stdin/0 , ungetc/2 % meta-data accessors - , filename/1 - , linenr/1 + , location/1 , format_error/1 ]). @@ -54,6 +53,7 @@ }). -type scan_state() :: pid(). +-type location() :: {FileName :: string(), LineNr :: pos_integer()}. -export_type([scan_state/0]). @@ -85,13 +85,9 @@ do_fopen(File) -> ungetc(Ch, Pid) -> gen_server:call(Pid, {ungetc, Ch}, infinity). --spec filename(scan_state()) -> {ok, string()}. -filename(Pid) -> - gen_server:call(Pid, filename, infinity). - --spec linenr(scan_state()) -> {ok, pos_integer()}. -linenr(Pid) -> - gen_server:call(Pid, linenr, infinity). +-spec location(scan_state()) -> {ok, location()}. +location(Pid) -> + gen_server:call(Pid, location, infinity). -spec format_error(term()) -> io_lib:chars(). format_error(Reason) -> @@ -131,10 +127,8 @@ handle_call(Req, _From, State) -> handle_fgetc(State); {ungetc, Ch} -> handle_ungetc(State, Ch); - filename -> - {reply, {ok, State#state.filename}, State}; - linenr -> - {reply, {ok, State#state.linenr}, State}; + location -> + {reply, {ok, {State#state.filename, State#state.linenr}}, State}; _ -> {reply, {error, {?MODULE, {bad_request, Req}}}, State} end.