Looks like bug to me:
struct Foo { static var bar: Int = 0 } let binding1: Binding<Int> = .init { Foo.bar } set: { Foo.bar = $0 } // ok let binding2: Binding<Int> = $Foo.bar // Error: Cannot find '$Foo' in scope
oops, it doesn't work even here:
var x = 0 let y: Binding<Int> = .init { x } set: { x = $0 } // ok let z: Binding<Int> = $x // Error: Cannot find '$x' in scope
not a bug, feature?
You may want to ask over #swift-users instead; that may help garner the more appropriate group of audience. In any case, the syntax $varName currently applies to property wrappers only (SE-0258 and SE-0293)
$varName
What do you expect $Foo to refer to? The $ prefix is added to a property wrapper in order to access its projected value. Read the documentation.
$Foo
$