Liberal Democrat leader Jo Swinson says David Cameron cannot be forgiven for his "shocking misjudgment" over the decision to call a Brexit referendum.