mirror of
https://github.com/rust-lang/rust
synced 2024-10-16 21:43:43 +00:00
Auto merge of #111798 - GuillaumeGomez:rollup-t3bus8o, r=GuillaumeGomez
Rollup of 5 pull requests Successful merges: - #111450 (Use `OpaqueTypeKey` in query response) - #111726 (Migrate GUI colors test to original CSS color format) - #111746 (Merge some query impl modules into one) - #111765 (Migrate GUI colors test to original CSS color format) - #111771 (add `--remote-time` flag to curl for bootstrap) r? `@ghost` `@rustbot` modify labels: rollup
This commit is contained in:
commit
6bacf5a544
|
@ -153,20 +153,22 @@ fn make_query_response<T>(
|
||||||
|
|
||||||
/// Used by the new solver as that one takes the opaque types at the end of a probe
|
/// Used by the new solver as that one takes the opaque types at the end of a probe
|
||||||
/// to deal with multiple candidates without having to recompute them.
|
/// to deal with multiple candidates without having to recompute them.
|
||||||
pub fn clone_opaque_types_for_query_response(&self) -> Vec<(Ty<'tcx>, Ty<'tcx>)> {
|
pub fn clone_opaque_types_for_query_response(
|
||||||
|
&self,
|
||||||
|
) -> Vec<(ty::OpaqueTypeKey<'tcx>, Ty<'tcx>)> {
|
||||||
self.inner
|
self.inner
|
||||||
.borrow()
|
.borrow()
|
||||||
.opaque_type_storage
|
.opaque_type_storage
|
||||||
.opaque_types
|
.opaque_types
|
||||||
.iter()
|
.iter()
|
||||||
.map(|(k, v)| (self.tcx.mk_opaque(k.def_id.to_def_id(), k.substs), v.hidden_type.ty))
|
.map(|(k, v)| (*k, v.hidden_type.ty))
|
||||||
.collect()
|
.collect()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn take_opaque_types_for_query_response(&self) -> Vec<(Ty<'tcx>, Ty<'tcx>)> {
|
fn take_opaque_types_for_query_response(&self) -> Vec<(ty::OpaqueTypeKey<'tcx>, Ty<'tcx>)> {
|
||||||
std::mem::take(&mut self.inner.borrow_mut().opaque_type_storage.opaque_types)
|
std::mem::take(&mut self.inner.borrow_mut().opaque_type_storage.opaque_types)
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|(k, v)| (self.tcx.mk_opaque(k.def_id.to_def_id(), k.substs), v.hidden_type.ty))
|
.map(|(k, v)| (k, v.hidden_type.ty))
|
||||||
.collect()
|
.collect()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -507,8 +509,22 @@ fn query_response_substitution_guess<R>(
|
||||||
let a = substitute_value(self.tcx, &result_subst, a);
|
let a = substitute_value(self.tcx, &result_subst, a);
|
||||||
let b = substitute_value(self.tcx, &result_subst, b);
|
let b = substitute_value(self.tcx, &result_subst, b);
|
||||||
debug!(?a, ?b, "constrain opaque type");
|
debug!(?a, ?b, "constrain opaque type");
|
||||||
obligations
|
// We use equate here instead of, for example, just registering the
|
||||||
.extend(self.at(cause, param_env).eq(DefineOpaqueTypes::Yes, a, b)?.obligations);
|
// opaque type's hidden value directly, because we may be instantiating
|
||||||
|
// a query response that was canonicalized in an InferCtxt that had
|
||||||
|
// a different defining anchor. In that case, we may have inferred
|
||||||
|
// `NonLocalOpaque := LocalOpaque` but can only instantiate it in
|
||||||
|
// the other direction as `LocalOpaque := NonLocalOpaque`. Using eq
|
||||||
|
// here allows us to try both directions (in `InferCtxt::handle_opaque_type`).
|
||||||
|
obligations.extend(
|
||||||
|
self.at(cause, param_env)
|
||||||
|
.eq(
|
||||||
|
DefineOpaqueTypes::Yes,
|
||||||
|
self.tcx.mk_opaque(a.def_id.to_def_id(), a.substs),
|
||||||
|
b,
|
||||||
|
)?
|
||||||
|
.obligations,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(InferOk { value: result_subst, obligations })
|
Ok(InferOk { value: result_subst, obligations })
|
||||||
|
|
|
@ -280,7 +280,7 @@ pub struct QueryResponse<'tcx, R> {
|
||||||
/// should get its hidden type inferred. So we bubble the opaque type
|
/// should get its hidden type inferred. So we bubble the opaque type
|
||||||
/// and the type it was compared against upwards and let the query caller
|
/// and the type it was compared against upwards and let the query caller
|
||||||
/// handle it.
|
/// handle it.
|
||||||
pub opaque_types: Vec<(Ty<'tcx>, Ty<'tcx>)>,
|
pub opaque_types: Vec<(ty::OpaqueTypeKey<'tcx>, Ty<'tcx>)>,
|
||||||
pub value: R,
|
pub value: R,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -124,7 +124,7 @@ fn deref(&self) -> &Self::Target {
|
||||||
pub struct ExternalConstraintsData<'tcx> {
|
pub struct ExternalConstraintsData<'tcx> {
|
||||||
// FIXME: implement this.
|
// FIXME: implement this.
|
||||||
pub region_constraints: QueryRegionConstraints<'tcx>,
|
pub region_constraints: QueryRegionConstraints<'tcx>,
|
||||||
pub opaque_types: Vec<(Ty<'tcx>, Ty<'tcx>)>,
|
pub opaque_types: Vec<(ty::OpaqueTypeKey<'tcx>, Ty<'tcx>)>,
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: Having to clone `region_constraints` for folding feels bad and
|
// FIXME: Having to clone `region_constraints` for folding feels bad and
|
||||||
|
|
|
@ -506,169 +506,151 @@ macro_rules! define_queries {
|
||||||
(
|
(
|
||||||
$($(#[$attr:meta])*
|
$($(#[$attr:meta])*
|
||||||
[$($modifiers:tt)*] fn $name:ident($($K:tt)*) -> $V:ty,)*) => {
|
[$($modifiers:tt)*] fn $name:ident($($K:tt)*) -> $V:ty,)*) => {
|
||||||
mod get_query_incr {
|
|
||||||
use super::*;
|
|
||||||
|
|
||||||
$(
|
pub(crate) mod query_impl { $(pub mod $name {
|
||||||
|
use super::super::*;
|
||||||
|
use std::marker::PhantomData;
|
||||||
|
|
||||||
|
pub mod get_query_incr {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
// Adding `__rust_end_short_backtrace` marker to backtraces so that we emit the frames
|
// Adding `__rust_end_short_backtrace` marker to backtraces so that we emit the frames
|
||||||
// when `RUST_BACKTRACE=1`, add a new mod with `$name` here is to allow duplicate naming
|
// when `RUST_BACKTRACE=1`, add a new mod with `$name` here is to allow duplicate naming
|
||||||
pub mod $name {
|
#[inline(never)]
|
||||||
use super::*;
|
pub fn __rust_end_short_backtrace<'tcx>(
|
||||||
#[inline(never)]
|
tcx: TyCtxt<'tcx>,
|
||||||
pub fn __rust_end_short_backtrace<'tcx>(
|
span: Span,
|
||||||
tcx: TyCtxt<'tcx>,
|
key: queries::$name::Key<'tcx>,
|
||||||
span: Span,
|
mode: QueryMode,
|
||||||
key: queries::$name::Key<'tcx>,
|
) -> Option<Erase<queries::$name::Value<'tcx>>> {
|
||||||
mode: QueryMode,
|
get_query_incr(
|
||||||
) -> Option<Erase<queries::$name::Value<'tcx>>> {
|
QueryType::config(tcx),
|
||||||
get_query_incr(
|
QueryCtxt::new(tcx),
|
||||||
query_config::$name::config(tcx),
|
span,
|
||||||
QueryCtxt::new(tcx),
|
key,
|
||||||
span,
|
mode
|
||||||
key,
|
)
|
||||||
mode
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub mod get_query_non_incr {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[inline(never)]
|
||||||
|
pub fn __rust_end_short_backtrace<'tcx>(
|
||||||
|
tcx: TyCtxt<'tcx>,
|
||||||
|
span: Span,
|
||||||
|
key: queries::$name::Key<'tcx>,
|
||||||
|
__mode: QueryMode,
|
||||||
|
) -> Option<Erase<queries::$name::Value<'tcx>>> {
|
||||||
|
Some(get_query_non_incr(
|
||||||
|
QueryType::config(tcx),
|
||||||
|
QueryCtxt::new(tcx),
|
||||||
|
span,
|
||||||
|
key,
|
||||||
|
))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn dynamic_query<'tcx>() -> DynamicQuery<'tcx, queries::$name::Storage<'tcx>> {
|
||||||
|
DynamicQuery {
|
||||||
|
name: stringify!($name),
|
||||||
|
eval_always: is_eval_always!([$($modifiers)*]),
|
||||||
|
dep_kind: dep_graph::DepKind::$name,
|
||||||
|
handle_cycle_error: handle_cycle_error!([$($modifiers)*]),
|
||||||
|
query_state: offset_of!(QueryStates<'tcx> => $name),
|
||||||
|
query_cache: offset_of!(QueryCaches<'tcx> => $name),
|
||||||
|
cache_on_disk: |tcx, key| ::rustc_middle::query::cached::$name(tcx, key),
|
||||||
|
execute_query: |tcx, key| erase(tcx.$name(key)),
|
||||||
|
compute: |tcx, key| {
|
||||||
|
__rust_begin_short_backtrace(||
|
||||||
|
queries::$name::provided_to_erased(
|
||||||
|
tcx,
|
||||||
|
call_provider!([$($modifiers)*][tcx, $name, key])
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
},
|
||||||
|
can_load_from_disk: should_ever_cache_on_disk!([$($modifiers)*] true false),
|
||||||
|
try_load_from_disk: should_ever_cache_on_disk!([$($modifiers)*] {
|
||||||
|
|tcx, key, prev_index, index| {
|
||||||
|
if ::rustc_middle::query::cached::$name(tcx, key) {
|
||||||
|
let value = $crate::plumbing::try_load_from_disk::<
|
||||||
|
queries::$name::ProvidedValue<'tcx>
|
||||||
|
>(
|
||||||
|
tcx,
|
||||||
|
prev_index,
|
||||||
|
index,
|
||||||
|
);
|
||||||
|
value.map(|value| queries::$name::provided_to_erased(tcx, value))
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} {
|
||||||
|
|_tcx, _key, _prev_index, _index| None
|
||||||
|
}),
|
||||||
|
value_from_cycle_error: |tcx, cycle| {
|
||||||
|
let result: queries::$name::Value<'tcx> = Value::from_cycle_error(tcx, cycle);
|
||||||
|
erase(result)
|
||||||
|
},
|
||||||
|
loadable_from_disk: |_tcx, _key, _index| {
|
||||||
|
should_ever_cache_on_disk!([$($modifiers)*] {
|
||||||
|
::rustc_middle::query::cached::$name(_tcx, _key) &&
|
||||||
|
$crate::plumbing::loadable_from_disk(_tcx, _index)
|
||||||
|
} {
|
||||||
|
false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
hash_result: hash_result!([$($modifiers)*][queries::$name::Value<'tcx>]),
|
||||||
|
format_value: |value| format!("{:?}", restore::<queries::$name::Value<'tcx>>(*value)),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Copy, Clone, Default)]
|
||||||
|
pub struct QueryType<'tcx> {
|
||||||
|
data: PhantomData<&'tcx ()>
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'tcx> QueryConfigRestored<'tcx> for QueryType<'tcx> {
|
||||||
|
type RestoredValue = queries::$name::Value<'tcx>;
|
||||||
|
type Config = DynamicConfig<
|
||||||
|
'tcx,
|
||||||
|
queries::$name::Storage<'tcx>,
|
||||||
|
{ is_anon!([$($modifiers)*]) },
|
||||||
|
{ depth_limit!([$($modifiers)*]) },
|
||||||
|
{ feedable!([$($modifiers)*]) },
|
||||||
|
>;
|
||||||
|
|
||||||
|
#[inline(always)]
|
||||||
|
fn config(tcx: TyCtxt<'tcx>) -> Self::Config {
|
||||||
|
DynamicConfig {
|
||||||
|
dynamic: &tcx.query_system.dynamic_queries.$name,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
)*
|
|
||||||
}
|
|
||||||
|
|
||||||
mod get_query_non_incr {
|
#[inline(always)]
|
||||||
use super::*;
|
fn restore(value: <Self::Config as QueryConfig<QueryCtxt<'tcx>>>::Value) -> Self::RestoredValue {
|
||||||
|
restore::<queries::$name::Value<'tcx>>(value)
|
||||||
$(
|
|
||||||
pub mod $name {
|
|
||||||
use super::*;
|
|
||||||
#[inline(never)]
|
|
||||||
pub fn __rust_end_short_backtrace<'tcx>(
|
|
||||||
tcx: TyCtxt<'tcx>,
|
|
||||||
span: Span,
|
|
||||||
key: queries::$name::Key<'tcx>,
|
|
||||||
__mode: QueryMode,
|
|
||||||
) -> Option<Erase<queries::$name::Value<'tcx>>> {
|
|
||||||
Some(get_query_non_incr(
|
|
||||||
query_config::$name::config(tcx),
|
|
||||||
QueryCtxt::new(tcx),
|
|
||||||
span,
|
|
||||||
key,
|
|
||||||
))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
)*
|
}
|
||||||
}
|
})*}
|
||||||
|
|
||||||
pub(crate) fn engine(incremental: bool) -> QueryEngine {
|
pub(crate) fn engine(incremental: bool) -> QueryEngine {
|
||||||
if incremental {
|
if incremental {
|
||||||
QueryEngine {
|
QueryEngine {
|
||||||
$($name: get_query_incr::$name::__rust_end_short_backtrace,)*
|
$($name: query_impl::$name::get_query_incr::__rust_end_short_backtrace,)*
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
QueryEngine {
|
QueryEngine {
|
||||||
$($name: get_query_non_incr::$name::__rust_end_short_backtrace,)*
|
$($name: query_impl::$name::get_query_non_incr::__rust_end_short_backtrace,)*
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(nonstandard_style)]
|
|
||||||
mod query_config {
|
|
||||||
use std::marker::PhantomData;
|
|
||||||
|
|
||||||
$(
|
|
||||||
#[derive(Copy, Clone, Default)]
|
|
||||||
pub struct $name<'tcx> {
|
|
||||||
data: PhantomData<&'tcx ()>
|
|
||||||
}
|
|
||||||
)*
|
|
||||||
}
|
|
||||||
|
|
||||||
#[allow(nonstandard_style)]
|
|
||||||
mod dynamic_query {
|
|
||||||
use super::*;
|
|
||||||
|
|
||||||
$(
|
|
||||||
pub(super) fn $name<'tcx>() -> DynamicQuery<'tcx, queries::$name::Storage<'tcx>> {
|
|
||||||
DynamicQuery {
|
|
||||||
name: stringify!($name),
|
|
||||||
eval_always: is_eval_always!([$($modifiers)*]),
|
|
||||||
dep_kind: dep_graph::DepKind::$name,
|
|
||||||
handle_cycle_error: handle_cycle_error!([$($modifiers)*]),
|
|
||||||
query_state: offset_of!(QueryStates<'tcx> => $name),
|
|
||||||
query_cache: offset_of!(QueryCaches<'tcx> => $name),
|
|
||||||
cache_on_disk: |tcx, key| ::rustc_middle::query::cached::$name(tcx, key),
|
|
||||||
execute_query: |tcx, key| erase(tcx.$name(key)),
|
|
||||||
compute: |tcx, key| {
|
|
||||||
__rust_begin_short_backtrace(||
|
|
||||||
queries::$name::provided_to_erased(
|
|
||||||
tcx,
|
|
||||||
call_provider!([$($modifiers)*][tcx, $name, key])
|
|
||||||
)
|
|
||||||
)
|
|
||||||
},
|
|
||||||
can_load_from_disk: should_ever_cache_on_disk!([$($modifiers)*] true false),
|
|
||||||
try_load_from_disk: should_ever_cache_on_disk!([$($modifiers)*] {
|
|
||||||
|tcx, key, prev_index, index| {
|
|
||||||
if ::rustc_middle::query::cached::$name(tcx, key) {
|
|
||||||
let value = $crate::plumbing::try_load_from_disk::<
|
|
||||||
queries::$name::ProvidedValue<'tcx>
|
|
||||||
>(
|
|
||||||
tcx,
|
|
||||||
prev_index,
|
|
||||||
index,
|
|
||||||
);
|
|
||||||
value.map(|value| queries::$name::provided_to_erased(tcx, value))
|
|
||||||
} else {
|
|
||||||
None
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} {
|
|
||||||
|_tcx, _key, _prev_index, _index| None
|
|
||||||
}),
|
|
||||||
value_from_cycle_error: |tcx, cycle| {
|
|
||||||
let result: queries::$name::Value<'tcx> = Value::from_cycle_error(tcx, cycle);
|
|
||||||
erase(result)
|
|
||||||
},
|
|
||||||
loadable_from_disk: |_tcx, _key, _index| {
|
|
||||||
should_ever_cache_on_disk!([$($modifiers)*] {
|
|
||||||
::rustc_middle::query::cached::$name(_tcx, _key) &&
|
|
||||||
$crate::plumbing::loadable_from_disk(_tcx, _index)
|
|
||||||
} {
|
|
||||||
false
|
|
||||||
})
|
|
||||||
},
|
|
||||||
hash_result: hash_result!([$($modifiers)*][queries::$name::Value<'tcx>]),
|
|
||||||
format_value: |value| format!("{:?}", restore::<queries::$name::Value<'tcx>>(*value)),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)*
|
|
||||||
}
|
|
||||||
|
|
||||||
$(impl<'tcx> QueryConfigRestored<'tcx> for query_config::$name<'tcx> {
|
|
||||||
type RestoredValue = queries::$name::Value<'tcx>;
|
|
||||||
type Config = DynamicConfig<
|
|
||||||
'tcx,
|
|
||||||
queries::$name::Storage<'tcx>,
|
|
||||||
{ is_anon!([$($modifiers)*]) },
|
|
||||||
{ depth_limit!([$($modifiers)*]) },
|
|
||||||
{ feedable!([$($modifiers)*]) },
|
|
||||||
>;
|
|
||||||
|
|
||||||
#[inline(always)]
|
|
||||||
fn config(tcx: TyCtxt<'tcx>) -> Self::Config {
|
|
||||||
DynamicConfig {
|
|
||||||
dynamic: &tcx.query_system.dynamic_queries.$name,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[inline(always)]
|
|
||||||
fn restore(value: <Self::Config as QueryConfig<QueryCtxt<'tcx>>>::Value) -> Self::RestoredValue {
|
|
||||||
restore::<queries::$name::Value<'tcx>>(value)
|
|
||||||
}
|
|
||||||
})*
|
|
||||||
|
|
||||||
pub fn dynamic_queries<'tcx>() -> DynamicQueries<'tcx> {
|
pub fn dynamic_queries<'tcx>() -> DynamicQueries<'tcx> {
|
||||||
DynamicQueries {
|
DynamicQueries {
|
||||||
$(
|
$(
|
||||||
$name: dynamic_query::$name(),
|
$name: query_impl::$name::dynamic_query(),
|
||||||
)*
|
)*
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -731,7 +713,7 @@ pub fn CompileMonoItem<'tcx>() -> DepKindStruct<'tcx> {
|
||||||
}
|
}
|
||||||
|
|
||||||
$(pub(crate) fn $name<'tcx>()-> DepKindStruct<'tcx> {
|
$(pub(crate) fn $name<'tcx>()-> DepKindStruct<'tcx> {
|
||||||
$crate::plumbing::query_callback::<query_config::$name<'tcx>>(
|
$crate::plumbing::query_callback::<query_impl::$name::QueryType<'tcx>>(
|
||||||
is_anon!([$($modifiers)*]),
|
is_anon!([$($modifiers)*]),
|
||||||
is_eval_always!([$($modifiers)*]),
|
is_eval_always!([$($modifiers)*]),
|
||||||
)
|
)
|
||||||
|
@ -786,8 +768,8 @@ pub(super) const fn $name<'tcx>() -> QueryStruct<'tcx> { QueryStruct {
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
encode_query_results: expand_if_cached!([$($modifiers)*], |tcx, encoder, query_result_index|
|
encode_query_results: expand_if_cached!([$($modifiers)*], |tcx, encoder, query_result_index|
|
||||||
$crate::plumbing::encode_query_results::<super::query_config::$name<'tcx>>(
|
$crate::plumbing::encode_query_results::<query_impl::$name::QueryType<'tcx>>(
|
||||||
super::query_config::$name::config(tcx),
|
query_impl::$name::QueryType::config(tcx),
|
||||||
QueryCtxt::new(tcx),
|
QueryCtxt::new(tcx),
|
||||||
encoder,
|
encoder,
|
||||||
query_result_index,
|
query_result_index,
|
||||||
|
|
|
@ -109,7 +109,7 @@ def _download(path, url, probably_big, verbose, exception):
|
||||||
"-L", # Follow redirect.
|
"-L", # Follow redirect.
|
||||||
"-y", "30", "-Y", "10", # timeout if speed is < 10 bytes/sec for > 30 seconds
|
"-y", "30", "-Y", "10", # timeout if speed is < 10 bytes/sec for > 30 seconds
|
||||||
"--connect-timeout", "30", # timeout if cannot connect within 30 seconds
|
"--connect-timeout", "30", # timeout if cannot connect within 30 seconds
|
||||||
"--retry", "3", "-Sf", url],
|
"--retry", "3", "-SRf", url],
|
||||||
stdout=outfile, #Implements cli redirect operator '>'
|
stdout=outfile, #Implements cli redirect operator '>'
|
||||||
verbose=verbose,
|
verbose=verbose,
|
||||||
exception=True, # Will raise RuntimeError on failure
|
exception=True, # Will raise RuntimeError on failure
|
||||||
|
|
|
@ -219,7 +219,7 @@ fn download_http_with_retries(&self, tempfile: &Path, url: &str, help_on_error:
|
||||||
"30", // timeout if cannot connect within 30 seconds
|
"30", // timeout if cannot connect within 30 seconds
|
||||||
"--retry",
|
"--retry",
|
||||||
"3",
|
"3",
|
||||||
"-Sf",
|
"-SRf",
|
||||||
]);
|
]);
|
||||||
curl.arg(url);
|
curl.arg(url);
|
||||||
let f = File::create(tempfile).unwrap();
|
let f = File::create(tempfile).unwrap();
|
||||||
|
|
|
@ -33,30 +33,30 @@ define-function: (
|
||||||
|
|
||||||
call-function: ("check-colors", {
|
call-function: ("check-colors", {
|
||||||
"theme": "ayu",
|
"theme": "ayu",
|
||||||
"highlight": "rgb(91, 59, 1)",
|
"highlight": "#5b3b01",
|
||||||
"highlight_focus": "rgb(124, 75, 15)",
|
"highlight_focus": "#7c4b0f",
|
||||||
"help_border": "rgb(170, 170, 170)",
|
"help_border": "#aaa",
|
||||||
"help_color": "rgb(238, 238, 238)",
|
"help_color": "#eee",
|
||||||
"help_hover_border": "rgb(255, 255, 255)",
|
"help_hover_border": "#fff",
|
||||||
"help_hover_color": "rgb(255, 255, 255)",
|
"help_hover_color": "#fff",
|
||||||
})
|
})
|
||||||
call-function: ("check-colors", {
|
call-function: ("check-colors", {
|
||||||
"theme": "dark",
|
"theme": "dark",
|
||||||
"highlight": "rgb(91, 59, 1)",
|
"highlight": "#5b3b01",
|
||||||
"highlight_focus": "rgb(124, 75, 15)",
|
"highlight_focus": "#7c4b0f",
|
||||||
"help_border": "rgb(170, 170, 170)",
|
"help_border": "#aaa",
|
||||||
"help_color": "rgb(238, 238, 238)",
|
"help_color": "#eee",
|
||||||
"help_hover_border": "rgb(255, 255, 255)",
|
"help_hover_border": "#fff",
|
||||||
"help_hover_color": "rgb(255, 255, 255)",
|
"help_hover_color": "#fff",
|
||||||
})
|
})
|
||||||
call-function: ("check-colors", {
|
call-function: ("check-colors", {
|
||||||
"theme": "light",
|
"theme": "light",
|
||||||
"highlight": "rgb(252, 255, 214)",
|
"highlight": "#fcffd6",
|
||||||
"highlight_focus": "rgb(246, 253, 176)",
|
"highlight_focus": "#f6fdb0",
|
||||||
"help_border": "rgb(85, 85, 85)",
|
"help_border": "#555",
|
||||||
"help_color": "rgb(51, 51, 51)",
|
"help_color": "#333",
|
||||||
"help_hover_border": "rgb(0, 0, 0)",
|
"help_hover_border": "#000",
|
||||||
"help_hover_color": "rgb(0, 0, 0)",
|
"help_hover_color": "#000",
|
||||||
})
|
})
|
||||||
|
|
||||||
// Now testing the top and bottom background in case there is only one scraped examples.
|
// Now testing the top and bottom background in case there is only one scraped examples.
|
||||||
|
|
|
@ -40,24 +40,24 @@ define-function: (
|
||||||
|
|
||||||
call-function: ("check-colors", {
|
call-function: ("check-colors", {
|
||||||
"theme": "ayu",
|
"theme": "ayu",
|
||||||
"color": "rgb(92, 103, 115)",
|
"color": "#5c6773",
|
||||||
"background_color": "rgba(0, 0, 0, 0)",
|
"background_color": "transparent",
|
||||||
"highlight_color": "rgb(112, 128, 144)",
|
"highlight_color": "#708090",
|
||||||
"highlight_background_color": "rgba(255, 236, 164, 0.06)",
|
"highlight_background_color": "rgba(255, 236, 164, 0.06)",
|
||||||
})
|
})
|
||||||
call-function: ("check-colors", {
|
call-function: ("check-colors", {
|
||||||
"theme": "dark",
|
"theme": "dark",
|
||||||
"color": "rgb(59, 145, 226)",
|
"color": "#3b91e2",
|
||||||
"background_color": "rgba(0, 0, 0, 0)",
|
"background_color": "transparent",
|
||||||
"highlight_color": "rgb(59, 145, 226)",
|
"highlight_color": "#3b91e2",
|
||||||
"highlight_background_color": "rgb(10, 4, 47)",
|
"highlight_background_color": "#0a042f",
|
||||||
})
|
})
|
||||||
call-function: ("check-colors", {
|
call-function: ("check-colors", {
|
||||||
"theme": "light",
|
"theme": "light",
|
||||||
"color": "rgb(198, 126, 45)",
|
"color": "#c67e2d",
|
||||||
"background_color": "rgba(0, 0, 0, 0)",
|
"background_color": "transparent",
|
||||||
"highlight_color": "rgb(198, 126, 45)",
|
"highlight_color": "#c67e2d",
|
||||||
"highlight_background_color": "rgb(253, 255, 211)",
|
"highlight_background_color": "#fdffd3",
|
||||||
})
|
})
|
||||||
|
|
||||||
// This is to ensure that the content is correctly align with the line numbers.
|
// This is to ensure that the content is correctly align with the line numbers.
|
||||||
|
|
Loading…
Reference in a new issue