Also seems like after an invalid nameref assignment is encountered, declare works oddly on remaining assignments that are part of the same command:
$ *unset* -n bad good $ declare -n bad+=. good=var bash: declare: `.': not a valid identifier $ *declare* -p good declare -- good="var" # created, but not a nameref $ *unset* -n bad good $ declare -n good=var; declare -n bad+=. good=foo bash: declare: `.': not a valid identifier $ *declare* -p good declare -n good="var" # not modified $ *unset* -n bad good $ declare -n good=var; declare -n bad+=. good=var bash: declare: `.': not a valid identifier bash: var: nameref variable self references not allowed # ??