[cfe-commits] r155670 - in /cfe/trunk: lib/Parse/ParseTemplate.cpp lib/Sema/SemaTemplate.cpp test/SemaTemplate/default-expr-arguments.cpp

Joerg Sonnenberger joerg at britannica.bec.de
Sat Apr 28 09:18:02 PDT 2012


Bill, please pull this onto the 3.1 branch.

Joerg

On Thu, Apr 26, 2012 at 10:43:24PM -0000, Eli Friedman wrote:
> Author: efriedma
> Date: Thu Apr 26 17:43:24 2012
> New Revision: 155670
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=155670&view=rev
> Log:
> Add a missing ExpressionEvaluationContext for template default arguments.  Fixes PR12581.
> 
> 
> Modified:
>     cfe/trunk/lib/Parse/ParseTemplate.cpp
>     cfe/trunk/lib/Sema/SemaTemplate.cpp
>     cfe/trunk/test/SemaTemplate/default-expr-arguments.cpp
> 
> Modified: cfe/trunk/lib/Parse/ParseTemplate.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParseTemplate.cpp?rev=155670&r1=155669&r2=155670&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Parse/ParseTemplate.cpp (original)
> +++ cfe/trunk/lib/Parse/ParseTemplate.cpp Thu Apr 26 17:43:24 2012
> @@ -652,6 +652,7 @@
>      //   end of the template-parameter-list rather than a greater-than
>      //   operator.
>      GreaterThanIsOperatorScope G(GreaterThanIsOperator, false);
> +    EnterExpressionEvaluationContext Unevaluated(Actions, Sema::Unevaluated);
>  
>      DefaultArg = ParseAssignmentExpression();
>      if (DefaultArg.isInvalid())
> 
> Modified: cfe/trunk/lib/Sema/SemaTemplate.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaTemplate.cpp?rev=155670&r1=155669&r2=155670&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Sema/SemaTemplate.cpp (original)
> +++ cfe/trunk/lib/Sema/SemaTemplate.cpp Thu Apr 26 17:43:24 2012
> @@ -2562,6 +2562,7 @@
>                                     SourceRange(TemplateLoc, RAngleLoc));
>  
>    Sema::ContextRAII SavedContext(SemaRef, Template->getDeclContext());
> +  EnterExpressionEvaluationContext Unevaluated(SemaRef, Sema::Unevaluated);
>    return SemaRef.SubstExpr(Param->getDefaultArgument(), AllTemplateArgs);
>  }
>  
> 
> Modified: cfe/trunk/test/SemaTemplate/default-expr-arguments.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaTemplate/default-expr-arguments.cpp?rev=155670&r1=155669&r2=155670&view=diff
> ==============================================================================
> --- cfe/trunk/test/SemaTemplate/default-expr-arguments.cpp (original)
> +++ cfe/trunk/test/SemaTemplate/default-expr-arguments.cpp Thu Apr 26 17:43:24 2012
> @@ -292,3 +292,14 @@
>      f();
>    }
>  }
> +
> +namespace PR12581 {
> +  const int a = 0;
> +  template < typename > struct A;
> +  template < typename MatrixType, int =
> +  A < MatrixType >::Flags ? : A < MatrixType >::Flags & a > class B;
> +  void
> +  fn1 ()
> +  {
> +  }
> +}
> 
> 
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits



More information about the cfe-commits mailing list