Clarify SAN disambiguation in case of a pinned piece
authorMarco Costalba <mcostalba@gmail.com>
Sat, 12 Jan 2013 12:19:06 +0000 (13:19 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Sat, 12 Jan 2013 12:21:14 +0000 (13:21 +0100)
In SAN notation when two pieces of the same type can
move to a given destination square, a disambiguation
additional info (like starting file) shall be added
to the SAN move.

If one of the two pieces is pinned, the corresponding
move _could_ be illegal and in this case disambiguation
is not needed. But to be pinned alone it is not enough
to deduce that the move is illegal, for instance in this
position:

R3rk2/2r6/8/8/8/8/8/K7 b - - 0 1

The move Rc8 is ambiguous although the rook in e8 is pinned
and the correct SAN notation should be Rcc8.

No functional change.

src/notation.cpp

index 85b0abdd2914e6c268da8408cc888de0828f3b5b..bb4a713cc2e563752bf17cefd57720b121de6430 100644 (file)
@@ -137,7 +137,7 @@ const string move_to_san(Position& pos, Move m) {
           {
               Square sq = pop_lsb(&attackers);
 
-              // Pinned pieces are not included in the possible sub-set
+              // If the move is illegal, the piece is not included in the sub-set
               if (!pos.pl_move_is_legal(make_move(sq, to), pos.pinned_pieces()))
                   continue;