diff options
author | Hans Bolinder <[email protected]> | 2011-07-07 09:17:22 +0200 |
---|---|---|
committer | Hans Bolinder <[email protected]> | 2011-07-07 09:17:22 +0200 |
commit | 815e3bef189e7e2d614a014a526a638ad307ee7f (patch) | |
tree | 8d7c6a85939d6558003b6ca1cfed0343828ac11f | |
parent | ce834798d7f08d5869f11a1cb81e49ca7d5db3b8 (diff) | |
parent | 790d7218531957b1a2427432f4cbfc49f49b3566 (diff) | |
download | otp-815e3bef189e7e2d614a014a526a638ad307ee7f.tar.gz otp-815e3bef189e7e2d614a014a526a638ad307ee7f.tar.bz2 otp-815e3bef189e7e2d614a014a526a638ad307ee7f.zip |
Merge branch 'hb/scanner_bug/OTP-9412' into dev
* hb/scanner_bug/OTP-9412:
Fix a bug in erl_scan:set_attribute/3
-rw-r--r-- | lib/stdlib/src/erl_scan.erl | 7 | ||||
-rw-r--r-- | lib/stdlib/test/erl_scan_SUITE.erl | 4 |
2 files changed, 10 insertions, 1 deletions
diff --git a/lib/stdlib/src/erl_scan.erl b/lib/stdlib/src/erl_scan.erl index 718ca2e91a..10b2ed2e49 100644 --- a/lib/stdlib/src/erl_scan.erl +++ b/lib/stdlib/src/erl_scan.erl @@ -408,7 +408,12 @@ set_attr(line, {Line,Column}, Fun) when ?ALINE(Line), ?COLUMN(Column) -> end; set_attr(line=Tag, Attrs, Fun) when is_list(Attrs) -> {line,Line} = lists:keyfind(Tag, 1, Attrs), - lists:keyreplace(Tag, 1, Attrs, {line,Fun(Line)}); + case lists:keyreplace(Tag, 1, Attrs, {line,Fun(Line)}) of + [{line,Ln}] when ?ALINE(Ln) -> + Ln; + As -> + As + end; set_attr(T1, T2, T3) -> erlang:error(badarg, [T1,T2,T3]). diff --git a/lib/stdlib/test/erl_scan_SUITE.erl b/lib/stdlib/test/erl_scan_SUITE.erl index 31a4f94294..4298b2c701 100644 --- a/lib/stdlib/test/erl_scan_SUITE.erl +++ b/lib/stdlib/test/erl_scan_SUITE.erl @@ -737,6 +737,10 @@ set_attribute() -> (catch {foo, erl_scan:set_attribute(line, [], F2)}), % type error ?line {'EXIT',{badarg,_}} = (catch {foo, erl_scan:set_attribute(column, [], F2)}), % type error + + %% OTP-9412 + ?line 8 = erl_scan:set_attribute(line, [{line,{nos,'X',8}}], + fun({nos,_V,VL}) -> VL end), ok. column_errors() -> |