<===> single/input.scss
@use "midstream";

<===> single/_midstream.scss
@forward "upstream" with ($a: configured);

<===> single/_upstream.scss
$a: original !default;
b {c: $a}

<===> single/output.css
b {
  c: configured;
}

<===>
================================================================================
<===> null/input.scss
@use "midstream";

<===> null/_midstream.scss
@forward "upstream" with ($a: null);

<===> null/_upstream.scss
$a: original !default;
b {c: $a}

<===> null/output.css
b {
  c: original;
}

<===>
================================================================================
<===> default/input.scss
@use "midstream";

<===> default/_midstream.scss
@forward "upstream" with ($a: configured !default);

<===> default/_upstream.scss
$a: original !default;
b {c: $a}

<===> default/output.css
b {
  c: configured;
}

<===>
================================================================================
<===> trailing_comma/input.scss
@use "midstream";

<===> trailing_comma/_midstream.scss
@forward "upstream" with ($a: configured,);

<===> trailing_comma/_upstream.scss
$a: original !default;
b {c: $a}

<===> trailing_comma/output.css
b {
  c: configured;
}

<===>
================================================================================
<===> trailing_comma/default/input.scss
@use "midstream";

<===> trailing_comma/default/_midstream.scss
@forward "upstream" with ($a: configured !default,);

<===> trailing_comma/default/_upstream.scss
$a: original !default;
b {c: $a}

<===> trailing_comma/default/output.css
b {
  c: configured;
}

<===>
================================================================================
<===> dash_insensitive/input.scss
@use "midstream";

<===> dash_insensitive/_midstream.scss
@forward "upstream" with ($a_b: configured);

<===> dash_insensitive/_upstream.scss
$a-b: original !default;
b {c: $a-b}

<===> dash_insensitive/output.css
b {
  c: configured;
}

<===>
================================================================================
<===> multiple/input.scss
@use "midstream";

<===> multiple/_midstream.scss
@forward "upstream" with (
  $a: configured a,
  $b: configured b,
  $c: configured c
);

<===> multiple/_upstream.scss
$a: original a !default;
$b: original b !default;
$c: original c !default;

d {
  a: $a;
  b: $b;
  c: $c;
}

<===> multiple/output.css
d {
  a: configured a;
  b: configured b;
  c: configured c;
}

<===>
================================================================================
<===> multiple/default/input.scss
@use "midstream";

<===> multiple/default/_midstream.scss
@forward "upstream" with (
  $a: configured a !default,
  $b: configured b !default,
  $c: configured c !default
);

<===> multiple/default/_upstream.scss
$a: original a !default;
$b: original b !default;
$c: original c !default;

d {
  a: $a;
  b: $b;
  c: $c;
}

<===> multiple/default/output.css
d {
  a: configured a;
  b: configured b;
  c: configured c;
}

<===>
================================================================================
<===> some_unconfigured/input.scss
@use "midstream";

<===> some_unconfigured/_midstream.scss
@forward "upstream" with ($a: configured a);

<===> some_unconfigured/_upstream.scss
$a: original a !default;
$b: original b !default;

c {
  a: $a;
  b: $b;
}

<===> some_unconfigured/output.css
c {
  a: configured a;
  b: original b;
}

<===>
================================================================================
<===> from_variable/input.scss
@use "midstream";

<===> from_variable/_midstream.scss
$a: configured;
@forward "upstream" with ($a: $a);

<===> from_variable/_upstream.scss
$a: original a !default;
b {c: $a}

<===> from_variable/output.css
b {
  c: configured;
}

<===>
================================================================================
<===> doesnt_run_default/input.scss
@use "midstream";

<===> doesnt_run_default/_midstream.scss
@forward "upstream" with ($a: configured);

<===> doesnt_run_default/_upstream.scss
// This will throw an error if it's evaluated, but it shouldn't be because `$a`
// already has a value.
$a: 1px + 1em !default;
b {c: $a}

<===> doesnt_run_default/output.css
b {
  c: configured;
}

<===>
================================================================================
<===> used_in_input/input.scss
@use "midstream";
b {c: midstream.$a}

<===> used_in_input/_midstream.scss
@forward "upstream" with ($a: configured);

<===> used_in_input/_upstream.scss
$a: original !default;

<===> used_in_input/output.css
b {
  c: configured;
}

<===>
================================================================================
<===> variable_exists/input.scss
@use "midstream";

<===> variable_exists/_midstream.scss
@forward "upstream" with ($a: configured);

<===> variable_exists/_upstream.scss
$before-declaration: variable-exists(a);
$a: original !default;
b {
  before-declaration: $before-declaration;
  after-declaration: variable-exists(a);
}

<===> variable_exists/output.css
b {
  before-declaration: false;
  after-declaration: true;
}

<===>
================================================================================
<===> through_import/direct/input.scss
@use "downstream";

<===> through_import/direct/_downstream.scss
@forward "midstream" with ($a: configured);

<===> through_import/direct/_midstream.scss
@import "upstream";

<===> through_import/direct/_upstream.scss
$a: original !default;
b {c: $a}

<===> through_import/direct/output.css
b {
  c: configured;
}

<===>
================================================================================
<===> through_import/transitive/input.scss
@use "used";

<===> through_import/transitive/_used.scss
@forward "forwarded" with ($a: configured);

<===> through_import/transitive/_forwarded.scss
@import "imported_downstream";

<===> through_import/transitive/_imported_downstream.scss
@import "imported_upstream";

<===> through_import/transitive/_imported_upstream.scss
$a: original !default;
b {c: $a}

<===> through_import/transitive/output.css
b {
  c: configured;
}

<===>
================================================================================
<===> through_forward/bare/input.scss
@use "downstream";

<===> through_forward/bare/_downstream.scss
@forward "midstream" with ($a: configured);

<===> through_forward/bare/_midstream.scss
@forward "upstream";

<===> through_forward/bare/_upstream.scss
$a: original !default;
b {c: $a}

<===> through_forward/bare/output.css
b {
  c: configured;
}

<===>
================================================================================
<===> through_forward/with/default/input.scss
@use "downstream";

<===> through_forward/with/default/_downstream.scss
@forward "midstream" with ($a: from downstream);

<===> through_forward/with/default/_midstream.scss
@forward "upstream" with ($a: from midstream !default);

<===> through_forward/with/default/_upstream.scss
$a: from upstream !default;
b {c: $a}

<===> through_forward/with/default/output.css
b {
  c: from downstream;
}

<===>
================================================================================
<===> through_forward/with/null/input.scss
@use "downstream";

<===> through_forward/with/null/_downstream.scss
@forward "midstream" with ($a: null);

<===> through_forward/with/null/_midstream.scss
@forward "upstream" with ($a: from midstream !default);

<===> through_forward/with/null/_upstream.scss
$a: from upstream !default;
b {c: $a}

<===> through_forward/with/null/output.css
b {
  c: from midstream;
}

<===>
================================================================================
<===> through_forward/with/unconfigured/input.scss
@use "downstream";

<===> through_forward/with/unconfigured/_downstream.scss
@forward "midstream" with ($a: from downstream);

<===> through_forward/with/unconfigured/_midstream.scss
@forward "upstream" with ($b: from midstream !default);

<===> through_forward/with/unconfigured/_upstream.scss
$a: from upstream !default;
$b: from upstream !default;
c {
  a: $a;
  b: $b;
}

<===> through_forward/with/unconfigured/output.css
c {
  a: from downstream;
  b: from midstream;
}

<===>
================================================================================
<===> through_forward/show/input.scss
@use "downstream";

<===> through_forward/show/_downstream.scss
@forward "midstream" with ($a: configured);

<===> through_forward/show/_midstream.scss
@forward "upstream" show $a;

<===> through_forward/show/_upstream.scss
$a: original !default;
b {c: $a}

<===> through_forward/show/output.css
b {
  c: configured;
}

<===>
================================================================================
<===> through_forward/hide/input.scss
@use "downstream";

<===> through_forward/hide/_downstream.scss
@forward "midstream" with ($a: configured);

<===> through_forward/hide/_midstream.scss
@forward "upstream" hide $b;

<===> through_forward/hide/_upstream.scss
$a: original !default;
b {c: $a}

<===> through_forward/hide/output.css
b {
  c: configured;
}

<===>
================================================================================
<===> through_forward/as/input.scss
@use "downstream";

<===> through_forward/as/_downstream.scss
@forward "midstream" with ($b-a: configured);

<===> through_forward/as/_midstream.scss
@forward "upstream" as b-*;

<===> through_forward/as/_upstream.scss
$a: original !default;
c {d: $a}

<===> through_forward/as/output.css
c {
  d: configured;
}

<===>
================================================================================
<===> through_forward/with_unrelated_config/input.scss
@use "downstream";

<===> through_forward/with_unrelated_config/_downstream.scss
@forward "midstream" with ($from-midstream: configured);

<===> through_forward/with_unrelated_config/_midstream.scss
@forward "upstream";

$from-midstream: original !default;

a {from-midstream: $from-midstream}

<===> through_forward/with_unrelated_config/_upstream.scss
$from-upstream: original !default;
b {from-upstream: $from-upstream}

<===> through_forward/with_unrelated_config/output.css
b {
  from-upstream: original;
}

a {
  from-midstream: configured;
}

<===>
================================================================================
<===> through_forward/and_use/input.scss
@use "downstream";

<===> through_forward/and_use/_downstream.scss
// Regression test for sass/sass#2744.
@use "midstream" with ($c: e);

a {b: midstream.$c}

<===> through_forward/and_use/_midstream.scss
@forward "definition";
@forward "user";

<===> through_forward/and_use/_definition.scss
$c: d !default;

<===> through_forward/and_use/_user.scss
@use "definition";

<===> through_forward/and_use/output.css
a {
  b: e;
}

<===>
================================================================================
<===> core_module/indirect/use/input.scss
@use "midstream";

a {b: midstream.$c}

<===> core_module/indirect/use/_midstream.scss
// Regression test for sass/dart-sass#838.
@forward "upstream" with ($c: e);

<===> core_module/indirect/use/_upstream.scss
@use "sass:color";

$c: d !default;

<===> core_module/indirect/use/output.css
a {
  b: e;
}

<===>
================================================================================
<===> core_module/indirect/forward/input.scss
@use "midstream";

a {b: midstream.$c}

<===> core_module/indirect/forward/_midstream.scss
// Regression test for sass/dart-sass#838.
@forward "upstream" with ($c: e);

<===> core_module/indirect/forward/_upstream.scss
@forward "sass:color";

$c: d !default;

<===> core_module/indirect/forward/output.css
a {
  b: e;
}

<===>
================================================================================
<===> multi_load/README.md
If a module is first loaded with a configuration, future loads with no
configuration will use the configured module.

<===>
================================================================================
<===> multi_load/use/input.scss
@forward "upstream" with ($a: configured);
@use "midstream";

<===> multi_load/use/_midstream.scss
@use "upstream";
b {c: upstream.$a}

<===> multi_load/use/_upstream.scss
$a: original !default;

<===> multi_load/use/output.css
b {
  c: configured;
}

<===>
================================================================================
<===> multi_load/forward/input.scss
@forward "upstream" with ($a: configured);
@use "midstream";
b {c: midstream.$a}

<===> multi_load/forward/_midstream.scss
@forward "upstream";

<===> multi_load/forward/_upstream.scss
$a: original !default;

<===> multi_load/forward/output.css
b {
  c: configured;
}

<===>
================================================================================
<===> multi_load/transitive/input.scss
@use "downstream";

b {
  midstream1: downstream.$m1-a;
  midstream2: downstream.$m2-a;
}

<===> multi_load/transitive/_downstream.scss
// Regression test for sass/dart-sass#854.
@forward "midstream1" as m1-* with ($a: overridden 1);
@forward "midstream2" as m2-* with ($a: overridden 2);

<===> multi_load/transitive/_midstream1.scss
@use "upstream";
$a: default 1 !default;

<===> multi_load/transitive/_midstream2.scss
@use "upstream";
$a: default 2 !default;

<===> multi_load/transitive/_upstream.scss
c {d: e}

<===> multi_load/transitive/output.css
c {
  d: e;
}

b {
  midstream1: overridden 1;
  midstream2: overridden 2;
}