From 6540ddba79e0f4286e5f8899691d9c29677222a0 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Thu, 24 Feb 2011 03:53:10 +0000 Subject: [PATCH] Don't crash on type switch of nil. From-SVN: r170455 --- gcc/go/gofrontend/statements.cc | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/gcc/go/gofrontend/statements.cc b/gcc/go/gofrontend/statements.cc index 45e45a381b7..629fdd81615 100644 --- a/gcc/go/gofrontend/statements.cc +++ b/gcc/go/gofrontend/statements.cc @@ -3905,10 +3905,13 @@ Type_switch_statement::do_lower(Gogo*, Block* enclosing) { // Doing a type switch on a non-interface type. Should we issue // a warning for this case? - // descriptor_temp = DESCRIPTOR Expression* lhs = Expression::make_temporary_reference(descriptor_temp, loc); - Expression* rhs = Expression::make_type_descriptor(val_type, loc); + Expression* rhs; + if (val_type->is_nil_type()) + rhs = Expression::make_nil(loc); + else + rhs = Expression::make_type_descriptor(val_type, loc); Statement* s = Statement::make_assignment(lhs, rhs, loc); b->add_statement(s); }