本文整理汇总了C#中Mono.CSharp.TypeContainer.GetSignatureForError方法的典型用法代码示例。如果您正苦于以下问题:C# TypeContainer.GetSignatureForError方法的具体用法?C# TypeContainer.GetSignatureForError怎么用?C# TypeContainer.GetSignatureForError使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Mono.CSharp.TypeContainer
的用法示例。
在下文中一共展示了TypeContainer.GetSignatureForError方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: AddPartial
protected TypeContainer AddPartial (TypeContainer next_part, string name)
{
next_part.ModFlags |= Modifiers.PARTIAL;
TypeContainer tc = GetDefinition (name) as TypeContainer;
if (tc == null)
return AddTypeContainer (next_part);
if ((tc.ModFlags & Modifiers.PARTIAL) == 0) {
Report.SymbolRelatedToPreviousError (next_part);
Error_MissingPartialModifier (tc);
}
if (tc.Kind != next_part.Kind) {
Report.SymbolRelatedToPreviousError (tc);
Report.Error (261, next_part.Location,
"Partial declarations of `{0}' must be all classes, all structs or all interfaces",
next_part.GetSignatureForError ());
}
if ((tc.ModFlags & Modifiers.AccessibilityMask) != (next_part.ModFlags & Modifiers.AccessibilityMask) &&
((tc.ModFlags & Modifiers.DEFAULT_ACCESS_MODIFER) == 0 &&
(next_part.ModFlags & Modifiers.DEFAULT_ACCESS_MODIFER) == 0)) {
Report.SymbolRelatedToPreviousError (tc);
Report.Error (262, next_part.Location,
"Partial declarations of `{0}' have conflicting accessibility modifiers",
next_part.GetSignatureForError ());
}
if (tc.partial_parts == null)
tc.partial_parts = new List<TypeContainer> (1);
if ((next_part.ModFlags & Modifiers.DEFAULT_ACCESS_MODIFER) != 0) {
tc.ModFlags |= next_part.ModFlags & ~(Modifiers.DEFAULT_ACCESS_MODIFER | Modifiers.AccessibilityMask);
} else if ((tc.ModFlags & Modifiers.DEFAULT_ACCESS_MODIFER) != 0) {
tc.ModFlags &= ~(Modifiers.DEFAULT_ACCESS_MODIFER | Modifiers.AccessibilityMask);
tc.ModFlags |= next_part.ModFlags;
} else {
tc.ModFlags |= next_part.ModFlags;
}
tc.spec.Modifiers = tc.ModFlags;
if (next_part.attributes != null) {
if (tc.attributes == null)
tc.attributes = next_part.attributes;
else
tc.attributes.AddAttributes (next_part.attributes.Attrs);
}
next_part.PartialContainer = tc;
tc.partial_parts.Add (next_part);
return tc;
}
示例2: AddPartial
protected TypeContainer AddPartial (TypeContainer next_part, string name)
{
next_part.ModFlags |= Modifiers.PARTIAL;
TypeContainer tc = GetDefinition (name) as TypeContainer;
if (tc == null)
return AddTypeContainer (next_part);
if ((tc.ModFlags & Modifiers.PARTIAL) == 0) {
Report.SymbolRelatedToPreviousError (next_part);
Error_MissingPartialModifier (tc);
}
if (tc.Kind != next_part.Kind) {
Report.SymbolRelatedToPreviousError (tc);
Report.Error (261, next_part.Location,
"Partial declarations of `{0}' must be all classes, all structs or all interfaces",
next_part.GetSignatureForError ());
}
if ((tc.ModFlags & Modifiers.AccessibilityMask) != (next_part.ModFlags & Modifiers.AccessibilityMask) &&
((tc.ModFlags & Modifiers.DEFAULT_ACCESS_MODIFER) == 0 &&
(next_part.ModFlags & Modifiers.DEFAULT_ACCESS_MODIFER) == 0)) {
Report.SymbolRelatedToPreviousError (tc);
Report.Error (262, next_part.Location,
"Partial declarations of `{0}' have conflicting accessibility modifiers",
next_part.GetSignatureForError ());
}
var tc_names = tc.CurrentTypeParameters;
if (tc_names != null) {
for (int i = 0; i < tc_names.Count; ++i) {
var tp = next_part.MemberName.TypeParameters[i];
if (tc_names[i].MemberName.Name != tp.MemberName.Name) {
Report.SymbolRelatedToPreviousError (tc.Location, "");
Report.Error (264, next_part.Location, "Partial declarations of `{0}' must have the same type parameter names in the same order",
next_part.GetSignatureForError ());
break;
}
if (tc_names[i].Variance != tp.Variance) {
Report.SymbolRelatedToPreviousError (tc.Location, "");
Report.Error (1067, next_part.Location, "Partial declarations of `{0}' must have the same type parameter variance modifiers",
next_part.GetSignatureForError ());
break;
}
}
}
if (tc.partial_parts == null)
tc.partial_parts = new List<TypeContainer> (1);
if ((next_part.ModFlags & Modifiers.DEFAULT_ACCESS_MODIFER) != 0) {
tc.ModFlags |= next_part.ModFlags & ~(Modifiers.DEFAULT_ACCESS_MODIFER | Modifiers.AccessibilityMask);
} else if ((tc.ModFlags & Modifiers.DEFAULT_ACCESS_MODIFER) != 0) {
tc.ModFlags &= ~(Modifiers.DEFAULT_ACCESS_MODIFER | Modifiers.AccessibilityMask);
tc.ModFlags |= next_part.ModFlags;
} else {
tc.ModFlags |= next_part.ModFlags;
}
tc.spec.Modifiers = tc.ModFlags;
if (next_part.attributes != null) {
if (tc.attributes == null)
tc.attributes = next_part.attributes;
else
tc.attributes.AddAttributes (next_part.attributes.Attrs);
}
next_part.PartialContainer = tc;
tc.partial_parts.Add (next_part);
return tc;
}
示例3: yyparse
//.........这里部分代码省略.........
#line 949 "cs-parser.jay"
{
--lexer.parsing_declaration;
if (RootContext.Documentation != null)
Lexer.doc_state = XmlCommentState.Allowed;
}
break;
case 109:
#line 955 "cs-parser.jay"
{
yyVal = pop_current_class ();
}
break;
case 110:
#line 958 "cs-parser.jay"
{
CheckIdentifierToken (yyToken, GetLocation (yyVals[0+yyTop]));
}
break;
case 111:
#line 965 "cs-parser.jay"
{
if (RootContext.Documentation != null)
Lexer.doc_state = XmlCommentState.Allowed;
}
break;
case 127:
#line 1007 "cs-parser.jay"
{
var modflags = (Modifiers) yyVals[-4+yyTop];
foreach (VariableDeclaration constant in (List<object>) yyVals[-1+yyTop]){
Location l = constant.Location;
if ((modflags & Modifiers.STATIC) != 0) {
Report.Error (504, l, "The constant `{0}' cannot be marked static", current_container.GetSignatureForError () + "." + (string) constant.identifier);
continue;
}
Const c = new Const (
current_class, (FullNamedExpression) yyVals[-2+yyTop], (string) constant.identifier,
constant.GetInitializer ((FullNamedExpression) yyVals[-2+yyTop]), modflags,
(Attributes) yyVals[-5+yyTop], l);
if (RootContext.Documentation != null) {
c.DocComment = Lexer.consume_doc_comment ();
Lexer.doc_state = XmlCommentState.Allowed;
}
current_container.AddConstant (c);
}
}
break;
case 128:
#line 1032 "cs-parser.jay"
{
variables_bucket.Clear ();
if (yyVals[0+yyTop] != null)
variables_bucket.Add (yyVals[0+yyTop]);
yyVal = variables_bucket;
}
break;
case 129:
#line 1039 "cs-parser.jay"
{
if (yyVals[0+yyTop] != null) {
var constants = (List<object>) yyVals[-2+yyTop];
constants.Add (yyVals[0+yyTop]);
}
示例4: Define
public bool Define (TypeContainer container, string method_full_name)
{
PendingImplementation pending = container.PendingImplementations;
MethodSpec ambig_iface_method;
bool optional = false;
if (pending != null) {
implementing = pending.IsInterfaceMethod (method.MethodName, member.InterfaceType, this, out ambig_iface_method, ref optional);
if (member.InterfaceType != null) {
if (implementing == null) {
if (member is PropertyBase) {
container.Compiler.Report.Error (550, method.Location,
"`{0}' is an accessor not found in interface member `{1}{2}'",
method.GetSignatureForError (), TypeManager.CSharpName (member.InterfaceType),
member.GetSignatureForError ().Substring (member.GetSignatureForError ().LastIndexOf ('.')));
} else {
container.Compiler.Report.Error (539, method.Location,
"`{0}.{1}' in explicit interface declaration is not a member of interface",
TypeManager.CSharpName (member.InterfaceType), member.ShortName);
}
return false;
}
if (implementing.IsAccessor && !method.IsAccessor) {
container.Compiler.Report.SymbolRelatedToPreviousError (implementing);
container.Compiler.Report.Error (683, method.Location,
"`{0}' explicit method implementation cannot implement `{1}' because it is an accessor",
member.GetSignatureForError (), TypeManager.CSharpSignature (implementing));
return false;
}
} else {
if (implementing != null) {
if (!method.IsAccessor) {
if (implementing.IsAccessor) {
container.Compiler.Report.SymbolRelatedToPreviousError (implementing);
container.Compiler.Report.Error (470, method.Location,
"Method `{0}' cannot implement interface accessor `{1}'",
method.GetSignatureForError (), TypeManager.CSharpSignature (implementing));
}
} else if (implementing.DeclaringType.IsInterface) {
if (!implementing.IsAccessor) {
container.Compiler.Report.SymbolRelatedToPreviousError (implementing);
container.Compiler.Report.Error (686, method.Location,
"Accessor `{0}' cannot implement interface member `{1}' for type `{2}'. Use an explicit interface implementation",
method.GetSignatureForError (), TypeManager.CSharpSignature (implementing), container.GetSignatureForError ());
} else {
PropertyBase.PropertyMethod pm = method as PropertyBase.PropertyMethod;
if (pm != null && pm.HasCustomAccessModifier && (pm.ModFlags & Modifiers.PUBLIC) == 0) {
container.Compiler.Report.SymbolRelatedToPreviousError (implementing);
container.Compiler.Report.Error (277, method.Location,
"Accessor `{0}' must be declared public to implement interface member `{1}'",
method.GetSignatureForError (), implementing.GetSignatureForError ());
}
}
}
}
}
} else {
ambig_iface_method = null;
}
//
// For implicit implementations, make sure we are public, for
// explicit implementations, make sure we are private.
//
if (implementing != null){
if (member.IsExplicitImpl) {
if (method.ParameterInfo.HasParams && !implementing.Parameters.HasParams) {
container.Compiler.Report.SymbolRelatedToPreviousError (implementing);
container.Compiler.Report.Error (466, method.Location,
"`{0}': the explicit interface implementation cannot introduce the params modifier",
method.GetSignatureForError ());
}
if (ambig_iface_method != null) {
container.Compiler.Report.SymbolRelatedToPreviousError (ambig_iface_method);
container.Compiler.Report.SymbolRelatedToPreviousError (implementing);
container.Compiler.Report.Warning (473, 2, method.Location,
"Explicit interface implementation `{0}' matches more than one interface member. Consider using a non-explicit implementation instead",
method.GetSignatureForError ());
}
} else {
//
// Setting implementin to null inside this block will trigger a more
// verbose error reporting for missing interface implementations
//
if (implementing.DeclaringType.IsInterface) {
//
// If this is an interface method implementation,
// check for public accessibility
//
if ((flags & MethodAttributes.MemberAccessMask) != MethodAttributes.Public) {
implementing = null;
} else if (optional && (container.Interfaces == null || Array.IndexOf (container.Interfaces, implementing.DeclaringType) < 0)) {
//
// We are not implementing interface when base class already implemented it
//
implementing = null;
}
//.........这里部分代码省略.........
示例5: CheckRecursiveDefinition
protected bool CheckRecursiveDefinition (TypeContainer tc)
{
if (InTransit != null) {
Report.SymbolRelatedToPreviousError (this);
if (this is Interface)
Report.Error (
529, tc.Location, "Inherited interface `{0}' causes a " +
"cycle in the interface hierarchy of `{1}'",
GetSignatureForError (), tc.GetSignatureForError ());
else
Report.Error (
146, tc.Location, "Circular base class dependency " +
"involving `{0}' and `{1}'",
tc.GetSignatureForError (), GetSignatureForError ());
return false;
}
InTransit = tc;
if (base_type != null && base_type.Type != null) {
Type t = TypeManager.DropGenericTypeArguments (base_type.Type);
TypeContainer ptc = TypeManager.LookupTypeContainer (t);
if ((ptc != null) && !ptc.CheckRecursiveDefinition (this))
return false;
}
if (iface_exprs != null) {
foreach (TypeExpr iface in iface_exprs) {
Type itype = TypeManager.DropGenericTypeArguments (iface.Type);
TypeContainer ptc = TypeManager.LookupTypeContainer (itype);
if ((ptc != null) && !ptc.CheckRecursiveDefinition (this))
return false;
}
}
if (!IsTopLevel && !Parent.PartialContainer.CheckRecursiveDefinition (this))
return false;
InTransit = null;
return true;
}