Skip to content

Commit 96955e7

Browse files
authored
Merge branch 'master' into yyc/codegen/negcheck
2 parents 707b257 + 9169552 commit 96955e7

File tree

6 files changed

+81
-134
lines changed

6 files changed

+81
-134
lines changed

base/client.jl

Lines changed: 7 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -484,7 +484,7 @@ end
484484
function run_std_repl(REPL::Module, quiet::Bool, banner::Symbol, history_file::Bool)
485485
term_env = get(ENV, "TERM", @static Sys.iswindows() ? "" : "dumb")
486486
term = REPL.Terminals.TTYTerminal(term_env, stdin, stdout, stderr)
487-
banner == :no || REPL.banner(term, banner)
487+
banner == :no || REPL.banner(term, short=banner==:short)
488488
if term.term_type == "dumb"
489489
repl = REPL.BasicREPL(term)
490490
quiet || @warn "Terminal not fully functional"
@@ -607,26 +607,12 @@ end
607607
function repl_main(_)
608608
opts = Base.JLOptions()
609609
interactiveinput = isa(stdin, Base.TTY)
610-
bval = if opts.banner == -1 # Auto
611-
Int(interactiveinput)
612-
else
613-
opts.banner
614-
end
615-
# All the options produced by `jloptions.c`'s `case opt_banner`.
616-
# 0=off, 1=largest, ..., N=smallest
617-
banner = if bval == 0
618-
:no
619-
elseif bval == 1
620-
:full
621-
elseif bval == 2
622-
:narrow
623-
elseif bval == 3
624-
:short
625-
elseif bval == 4
626-
:tiny
627-
else # For type stability of `banner`
628-
:unreachable
629-
end
610+
b = opts.banner
611+
auto = b == -1
612+
banner = b == 0 || (auto && !interactiveinput) ? :no :
613+
b == 1 || (auto && interactiveinput) ? :yes :
614+
:short # b == 2
615+
630616
quiet = (opts.quiet != 0)
631617
history_file = (opts.historyfile != 0)
632618
return run_main_repl(interactiveinput, quiet, banner, history_file)

src/jloptions.c

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -235,8 +235,7 @@ static const char opts[] =
235235
" -i, --interactive Interactive mode; REPL runs and\n"
236236
" `isinteractive()` is true.\n"
237237
" -q, --quiet Quiet startup: no banner, suppress REPL warnings\n"
238-
" --banner={yes|no|auto*|<size>} Enable or disable startup banner, or specify a\n"
239-
" preferred <size> (tiny, short, narrow, or full).\n"
238+
" --banner={yes|no|short|auto*} Enable or disable startup banner\n"
240239
" --color={yes|no|auto*} Enable or disable color text\n"
241240
" --history-file={yes*|no} Load or save history\n\n"
242241

@@ -612,22 +611,16 @@ JL_DLLEXPORT void jl_parse_opts(int *argcp, char ***argvp)
612611
jl_options.banner = 0;
613612
break;
614613
case opt_banner: // banner
615-
if (!strcmp(optarg, "auto"))
616-
jl_options.banner = -1;
614+
if (!strcmp(optarg, "yes"))
615+
jl_options.banner = 1;
617616
else if (!strcmp(optarg, "no"))
618617
jl_options.banner = 0;
619-
else if (!strcmp(optarg, "yes"))
620-
jl_options.banner = 1;
621-
else if (!strcmp(optarg, "full"))
622-
jl_options.banner = 1; // Same as "yes".
623-
else if (!strcmp(optarg, "narrow"))
624-
jl_options.banner = 2;
618+
else if (!strcmp(optarg, "auto"))
619+
jl_options.banner = -1;
625620
else if (!strcmp(optarg, "short"))
626-
jl_options.banner = 3;
627-
else if (!strcmp(optarg, "tiny"))
628-
jl_options.banner = 4;
621+
jl_options.banner = 2;
629622
else
630-
jl_errorf("julia: invalid argument to --banner={yes|no|auto|full|narrow|short|tiny} (%s)", optarg);
623+
jl_errorf("julia: invalid argument to --banner={yes|no|auto|short} (%s)", optarg);
631624
break;
632625
case opt_experimental_features:
633626
jl_options.use_experimental_features = JL_OPTIONS_USE_EXPERIMENTAL_FEATURES_YES;

stdlib/REPL/src/REPL.jl

Lines changed: 53 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1700,21 +1700,11 @@ function ends_with_semicolon(code)
17001700
return semi
17011701
end
17021702

1703-
"""
1704-
banner(io::IO = stdout, preferred::Symbol = :full)
1705-
1706-
Print the "Julia" informative banner to `io`, using the `preferred` variant
1707-
if reasonable and known.
1708-
1709-
!!! warning
1710-
The particular banner selected by `preferred` is liable to being changed
1711-
without warning. The current variants are: `:tiny`, `:short`, `:narrow`, and `:full`.
1712-
"""
1713-
function banner(io::IO = stdout, preferred::Symbol = :full)
1714-
commit_string = if Base.GIT_VERSION_INFO.tagged_commit
1715-
Base.AnnotatedString(TAGGED_RELEASE_BANNER, :face => :shadow)
1703+
function banner(io::IO = stdout; short = false)
1704+
if Base.GIT_VERSION_INFO.tagged_commit
1705+
commit_string = Base.TAGGED_RELEASE_BANNER
17161706
elseif isempty(Base.GIT_VERSION_INFO.commit)
1717-
styled""
1707+
commit_string = ""
17181708
else
17191709
days = Int(floor((ccall(:jl_clock_now, Float64, ()) - Base.GIT_VERSION_INFO.fork_master_timestamp) / (60 * 60 * 24)))
17201710
days = max(0, days)
@@ -1723,65 +1713,60 @@ function banner(io::IO = stdout, preferred::Symbol = :full)
17231713
commit = Base.GIT_VERSION_INFO.commit_short
17241714

17251715
if distance == 0
1726-
styled"""Commit {grey:$commit} \
1727-
({warning:⌛ {italic:$days $unit}} old master)"""
1716+
commit_string = "Commit $(commit) ($(days) $(unit) old master)"
17281717
else
17291718
branch = Base.GIT_VERSION_INFO.branch
1730-
styled"""{emphasis:$branch}/{grey:$commit} \
1731-
({italic:{success:{bold,(slant=normal):↑} $distance commits}, \
1732-
{warning:{(slant=normal):⌛} $days $unit}})"""
1719+
commit_string = "$(branch)/$(commit) (fork: $(distance) commits, $(days) $(unit))"
17331720
end
17341721
end
17351722

1736-
commit_date = isempty(Base.GIT_VERSION_INFO.date_string) ? "" : styled" {light:($(split(Base.GIT_VERSION_INFO.date_string)[1]))}"
1737-
doclink = styled"{bold:Documentation:} {(underline=grey),link={https://docs.julialang.org}:https://docs.julialang.org}"
1738-
help = styled"Type {repl_prompt_help:?} for help, {repl_prompt_pkg:]?} for {(underline=grey),link={https://pkgdocs.julialang.org/}:Pkg} help."
1739-
1740-
sizenames = (:tiny, :short, :narrow, :full)
1741-
maxsize = something(findfirst(==(preferred), sizenames), length(sizenames))
1742-
size = min(if all(displaysize(io) .>= (8, 70)); 4 # Full size
1743-
elseif all(displaysize(io) .>= (8, 45)); 3 # Narrower
1744-
elseif all(displaysize(io) .>= (3, 50)); 2 # Tiny
1745-
else 1 end,
1746-
max(0, maxsize))
1747-
1748-
if size == 4 # Full size
1749-
print(io, styled"""
1750-
{bold,green:_}
1751-
{bold,blue:_} _ {bold:{red:_}{green:(_)}{magenta:_}} {shadow:│} $doclink
1752-
{bold,blue:(_)} | {bold:{red:(_)} {magenta:(_)}} {shadow:│}
1753-
_ _ _| |_ __ _ {shadow:│} $help
1754-
| | | | | | |/ _` | {shadow:│}
1755-
| | |_| | | | (_| | {shadow:│} Version {bold:$VERSION}$commit_date
1756-
_/ |\\__'_|_|_|\\__'_| {shadow:│} $commit_string
1757-
|__/ {shadow:│}
1758-
\n""")
1759-
elseif size == 3 # Rotated
1760-
print(io, styled"""
1761-
{bold,green:_}
1762-
{bold,blue:_} _ {bold:{red:_}{green:(_)}{magenta:_}}
1763-
{bold,blue:(_)} | {bold:{red:(_)} {magenta:(_)}}
1764-
_ _ _| |_ __ _
1765-
| | | | | | |/ _` |
1766-
| | |_| | | | (_| |
1767-
_/ |\\__'_|_|_|\\__'_|
1768-
|__/
1769-
1770-
$doclink
1771-
$help
1772-
1773-
Version {bold:$VERSION}$commit_date
1774-
$commit_string
1775-
\n""")
1776-
elseif size == 2 # Tiny
1777-
print(io, styled"""
1778-
{bold,green:o} {shadow:│} Version {bold:$VERSION}$commit_date
1779-
{bold:{red:o} {magenta:o}} {shadow:│} $commit_string
1780-
""", ifelse(displaysize(io) > (12, 0), "\n", ""))
1781-
elseif size == 1 && Base.GIT_VERSION_INFO.tagged_commit # Text only
1782-
print(io, styled"""{bold:{blue:∴} {magenta:Julia} $VERSION}$commit_date\n""")
1783-
elseif size == 1 # Text only
1784-
print(io, styled"""{bold:{blue:∴} {magenta:Julia} $VERSION}$commit_date $commit_string\n""")
1723+
commit_date = isempty(Base.GIT_VERSION_INFO.date_string) ? "" : " ($(split(Base.GIT_VERSION_INFO.date_string)[1]))"
1724+
1725+
if get(io, :color, false)::Bool
1726+
c = Base.text_colors
1727+
tx = c[:normal] # text
1728+
jl = c[:normal] # julia
1729+
d1 = c[:bold] * c[:blue] # first dot
1730+
d2 = c[:bold] * c[:red] # second dot
1731+
d3 = c[:bold] * c[:green] # third dot
1732+
d4 = c[:bold] * c[:magenta] # fourth dot
1733+
1734+
if short
1735+
print(io,"""
1736+
$(d3)o$(tx) | Version $(VERSION)$(commit_date)
1737+
$(d2)o$(tx) $(d4)o$(tx) | $(commit_string)
1738+
""")
1739+
else
1740+
print(io,""" $(d3)_$(tx)
1741+
$(d1)_$(tx) $(jl)_$(tx) $(d2)_$(d3)(_)$(d4)_$(tx) | Documentation: https://docs.julialang.org
1742+
$(d1)(_)$(jl) | $(d2)(_)$(tx) $(d4)(_)$(tx) |
1743+
$(jl)_ _ _| |_ __ _$(tx) | Type \"?\" for help, \"]?\" for Pkg help.
1744+
$(jl)| | | | | | |/ _` |$(tx) |
1745+
$(jl)| | |_| | | | (_| |$(tx) | Version $(VERSION)$(commit_date)
1746+
$(jl)_/ |\\__'_|_|_|\\__'_|$(tx) | $(commit_string)
1747+
$(jl)|__/$(tx) |
1748+
1749+
""")
1750+
end
1751+
else
1752+
if short
1753+
print(io,"""
1754+
o | Version $(VERSION)$(commit_date)
1755+
o o | $(commit_string)
1756+
""")
1757+
else
1758+
print(io,"""
1759+
_
1760+
_ _ _(_)_ | Documentation: https://docs.julialang.org
1761+
(_) | (_) (_) |
1762+
_ _ _| |_ __ _ | Type \"?\" for help, \"]?\" for Pkg help.
1763+
| | | | | | |/ _` | |
1764+
| | |_| | | | (_| | | Version $(VERSION)$(commit_date)
1765+
_/ |\\__'_|_|_|\\__'_| | $(commit_string)
1766+
|__/ |
1767+
1768+
""")
1769+
end
17851770
end
17861771
end
17871772

stdlib/REPL/src/precompile.jl

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -223,20 +223,6 @@ let
223223
precompile(Tuple{typeof(Base.setindex!), Base.Dict{Any, Any}, Any, Int})
224224
precompile(Tuple{typeof(Base.delete!), Base.Set{Any}, String})
225225
precompile(Tuple{typeof(Base.:(==)), Char, String})
226-
# For the banner
227-
# TODO: Fix precompilation so this is no longer needed
228-
precompile(Tuple{typeof(Base.AnnotatedDisplay.ansi_write), typeof(Base.write), Base.TTY, Base.AnnotatedString{String}})
229-
precompile(Tuple{typeof(Base.all), Tuple{Bool, Bool}})
230-
precompile(Tuple{typeof(Base.get), Base.Dict{Tuple{Symbol, Any}, Int64}, Tuple{Symbol, REPL.StyledStrings.Face}, Int64})
231-
precompile(Tuple{typeof(Base.get), Base.Dict{Tuple{Symbol, Any}, Int64}, Tuple{Symbol, String}, Int64})
232-
precompile(Tuple{typeof(Base.get), Base.Dict{Tuple{Symbol, Any}, Int64}, Tuple{Symbol, Symbol}, Int64})
233-
precompile(Tuple{typeof(Base.hashindex), Tuple{Symbol, String}, Int64})
234-
precompile(Tuple{typeof(Base.isempty), Base.Dict{String, Any}})
235-
precompile(Tuple{typeof(Base.print), Base.TTY, Base.AnnotatedString{String}})
236-
precompile(Tuple{typeof(Base.setindex!), Base.Dict{Tuple{Symbol, Any}, Int64}, Int64, Tuple{Symbol, REPL.StyledStrings.Face}})
237-
precompile(Tuple{typeof(Base.setindex!), Base.Dict{Tuple{Symbol, Any}, Int64}, Int64, Tuple{Symbol, String}})
238-
precompile(Tuple{typeof(Base.setindex!), Base.Dict{Tuple{Symbol, Any}, Int64}, Int64, Tuple{Symbol, Symbol}})
239-
precompile(Tuple{typeof(REPL.banner), Base.TTY})
240226
finally
241227
ccall(:jl_tag_newly_inferred_disable, Cvoid, ())
242228
end

stdlib/REPL/test/repl.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1801,9 +1801,9 @@ let io = IOBuffer()
18011801
seek(io, 0)
18021802
@test countlines(io) == 9
18031803
take!(io)
1804-
@test REPL.banner(io, :tiny) === nothing
1804+
@test REPL.banner(io; short=true) === nothing
18051805
seek(io, 0)
1806-
@test countlines(io) == 1
1806+
@test countlines(io) == 2
18071807
end
18081808

18091809
@testset "Docstrings" begin

test/cmdlineargs.jl

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -321,21 +321,18 @@ let exename = `$(Base.julia_cmd()) --startup-file=no --color=no`
321321

322322
# --quiet, --banner
323323
let p = "print((Base.JLOptions().quiet, Base.JLOptions().banner))"
324-
@test read(`$exename -e $p`, String) == "(0, -1)"
325-
@test read(`$exename -q -e $p`, String) == "(1, 0)"
326-
@test read(`$exename --quiet -e $p`, String) == "(1, 0)"
327-
@test read(`$exename --banner=auto -e $p`, String) == "(0, -1)"
328-
@test read(`$exename --banner=no -e $p`, String) == "(0, 0)"
329-
@test read(`$exename --banner=yes -e $p`, String) == "(0, 1)"
330-
@test read(`$exename --banner=full -e $p`, String) == "(0, 1)"
331-
@test read(`$exename -q --banner=no -e $p`, String) == "(1, 0)"
332-
@test read(`$exename -q --banner=yes -e $p`, String) == "(1, 1)"
333-
@test read(`$exename -q --banner=tiny -e $p`, String) == "(1, 4)"
334-
@test read(`$exename --banner=no -q -e $p`, String) == "(1, 0)"
335-
@test read(`$exename --banner=yes -q -e $p`, String) == "(1, 1)"
336-
@test read(`$exename --banner=narrow -q -e $p`, String) == "(1, 2)"
337-
@test read(`$exename --banner=short -q -e $p`, String) == "(1, 3)"
338-
@test read(`$exename --banner=tiny -q -e $p`, String) == "(1, 4)"
324+
@test read(`$exename -e $p`, String) == "(0, -1)"
325+
@test read(`$exename -q -e $p`, String) == "(1, 0)"
326+
@test read(`$exename --quiet -e $p`, String) == "(1, 0)"
327+
@test read(`$exename --banner=no -e $p`, String) == "(0, 0)"
328+
@test read(`$exename --banner=yes -e $p`, String) == "(0, 1)"
329+
@test read(`$exename --banner=short -e $p`, String) == "(0, 2)"
330+
@test read(`$exename -q --banner=no -e $p`, String) == "(1, 0)"
331+
@test read(`$exename -q --banner=yes -e $p`, String) == "(1, 1)"
332+
@test read(`$exename -q --banner=short -e $p`, String) == "(1, 2)"
333+
@test read(`$exename --banner=no -q -e $p`, String) == "(1, 0)"
334+
@test read(`$exename --banner=yes -q -e $p`, String) == "(1, 1)"
335+
@test read(`$exename --banner=short -q -e $p`, String) == "(1, 2)"
339336
end
340337

341338
# --home

0 commit comments

Comments
 (0)