Code view:

A painting is a person's account of this edit as text, recorded independently of the node mapping - a rendering often has several equally defensible answers where the mapping has one. Deletions and insertions carry no position on the opposite side in a painting, so that panel draws no caret for them.

Before

1//@ revisions: feat nofeat
2
3#![cfg_attr(feat, feature(generic_const_parameter_types))]
4//[feat]~^ WARN the feature `generic_const_parameter_types` is incomplete
5
6trait Foo {
7 type Assoc<const N: Self>;
8 //[nofeat]~^ ERROR the type of const parameters must not depend on other generic parameters
9 //[feat]~^^ ERROR `Self` is forbidden as the type of a const generic parameter
10}
…lines 11–20 unchanged (10 lines)

After

1//@ revisions: feat nofeat
2
3#![cfg_attr(feat, feature(generic_const_parameter_types))]
4
5trait Foo {
6 type Assoc<const N: Self>;
7 //[nofeat]~^ ERROR the type of const parameters must not depend on other generic parameters
8 //[feat]~^^ ERROR `Self` is forbidden as the type of a const generic parameter
9}
10
…lines 11–19 unchanged (9 lines)

Before

source_file
line_comment
// "//"
inner_attribute_item
# "#"
! "!"
[ "["
attribute
identifier "cfg_attr"
token_tree
( "("
identifier "feat"
, ","
identifier "feature"
token_tree
( "("
identifier "generic_const_parameter_types"
) ")"
) ")"
] "]"
line_comment
// "//"
trait_item (+22 nodes collapsed)
function_item (+37 nodes collapsed)
function_item
fn "fn"
identifier "main"
parameters
( "("
) ")"
block
{ "{"
} "}"

After

source_file
line_comment
// "//"
inner_attribute_item
# "#"
! "!"
[ "["
attribute
identifier "cfg_attr"
token_tree
( "("
identifier "feat"
, ","
identifier "feature"
token_tree
( "("
identifier "generic_const_parameter_types"
) ")"
) ")"
] "]"
trait_item (+22 nodes collapsed)
function_item (+37 nodes collapsed)
function_item
fn "fn"
identifier "main"
parameters
( "("
) ")"
block
{ "{"
} "}"