What's the intended behavior here (associated type with default type, conditional conformances)?

I'd like to know the answer to that too.

It might be the intended behavior, but as shown by my above example and the following one, it is currently not the case:

struct S {
    let v: A
}
extension S {
    typealias A = Int
}

This program will compile with Xcode 9.3 default toolchain and recent dev snapshots.
The extension is needed to complete the binary layout of S, but I'm not sure whether it is meant to be invalid.

But it's clear that my previous example program should be invalid (even though the current compiler accepts it), I'm repeating it here for completeness:

struct S<T> {
    let v: A // Compiler happily concludes that A is String
}
extension S where T == Double {
    typealias A = String
}