I just re-built bash-20160415 snapshot and am observing the same behavior. To clarify, the first case is the unexpected one -- shouldn't `declare -n ref=var; declare -n ref' be a no-op, no matter if $var is set or not? It is a no-op when in global scope, but not inside a function.
- declare [-+]n behavior on existing (chained) namerefs Grisha Levit
- Re: declare [-+]n behavior on existing (chained) nam... Piotr Grzybowski
- Re: declare [-+]n behavior on existing (chained)... Grisha Levit
- Re: declare [-+]n behavior on existing (chained) nam... Grisha Levit
- Re: declare [-+]n behavior on existing (chained)... Piotr Grzybowski
- Re: declare [-+]n behavior on existing (chained)... Piotr Grzybowski
- Re: declare [-+]n behavior on existing (chained)... Chet Ramey
- Re: declare [-+]n behavior on existing (chained) nam... Grisha Levit
- Re: declare [-+]n behavior on existing (chained)... Piotr Grzybowski
- Re: declare [-+]n behavior on existing (chai... Grisha Levit
- Re: declare [-+]n behavior on existing (... Piotr Grzybowski
- Re: declare [-+]n behavior on existing (... Piotr Grzybowski
- Re: declare [-+]n behavior on existing (chained)... Chet Ramey
- Re: declare [-+]n behavior on existing (chai... Grisha Levit
- Re: declare [-+]n behavior on existing (... Piotr Grzybowski
- Re: declare [-+]n behavior on existing (chained) nam... Chet Ramey
- Re: declare [-+]n behavior on existing (chained)... Piotr Grzybowski