@ -111,7 +111,11 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp
/// <summary>
/// <summary>
/// Between "new" and "(" / "{".
/// Between "new" and "(" / "{".
/// </summary>
/// </summary>
ObjectCreation
ObjectCreation ,
/// <summary>
/// In object initializer, in the value part (after "=")
/// </summary>
ObjectInitializerValue
}
}
/// <summary>
/// <summary>
@ -195,7 +199,11 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp
SetContext ( ExpressionContext . ParameterType ) ;
SetContext ( ExpressionContext . ParameterType ) ;
break ;
break ;
case FrameType . ObjectInitializer :
case FrameType . ObjectInitializer :
SetContext ( ExpressionContext . ObjectInitializer ) ;
if ( state = = FrameState . ObjectInitializerValue ) {
SetContext ( ExpressionContext . Default ) ;
} else {
SetContext ( ExpressionContext . ObjectInitializer ) ;
}
break ;
break ;
case FrameType . AttributeSection :
case FrameType . AttributeSection :
SetContext ( ExpressionContext . Attribute ) ;
SetContext ( ExpressionContext . Attribute ) ;
@ -420,7 +428,7 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp
}
}
frame . lastExpressionStart = token . Location ;
frame . lastExpressionStart = token . Location ;
}
}
} else if ( Tokens . SimpleTypeName [ token . kind ] | | Tokens . ExpressionStart [ token . kind ] ) {
} else if ( Tokens . SimpleTypeName [ token . kind ] | | Tokens . ExpressionStart [ token . kind ] | | token . kind = = Tokens . Literal ) {
frame . lastExpressionStart = token . Location ;
frame . lastExpressionStart = token . Location ;
} else {
} else {
frame . lastExpressionStart = Location . Empty ;
frame . lastExpressionStart = Location . Empty ;
@ -488,7 +496,8 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp
frame . ResetCurlyChildType ( ) ;
frame . ResetCurlyChildType ( ) ;
break ;
break ;
} else if ( frame . type = = FrameType . ObjectInitializer ) {
} else if ( frame . type = = FrameType . ObjectInitializer ) {
frame . SetContext ( ExpressionContext . Default ) ;
frame . state = FrameState . ObjectInitializerValue ;
frame . SetDefaultContext ( ) ;
break ;
break ;
} else {
} else {
goto default ;
goto default ;
@ -551,6 +560,9 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp
if ( frame . state = = FrameState . FieldDecl | | frame . state = = FrameState . Initializer ) {
if ( frame . state = = FrameState . FieldDecl | | frame . state = = FrameState . Initializer ) {
frame . state = FrameState . FieldDecl ;
frame . state = FrameState . FieldDecl ;
frame . SetContext ( ExpressionContext . IdentifierExpected ) ;
frame . SetContext ( ExpressionContext . IdentifierExpected ) ;
} else if ( frame . state = = FrameState . ObjectInitializerValue ) {
frame . state = FrameState . Normal ;
frame . SetDefaultContext ( ) ;
}
}
break ;
break ;
case Tokens . Where :
case Tokens . Where :