本文整理汇总了C#中Analyzer.ResolveConstructor方法的典型用法代码示例。如果您正苦于以下问题:C# Analyzer.ResolveConstructor方法的具体用法?C# Analyzer.ResolveConstructor怎么用?C# Analyzer.ResolveConstructor使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Analyzer
的用法示例。
在下文中一共展示了Analyzer.ResolveConstructor方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Analyze
internal override Evaluation Analyze(Analyzer/*!*/ analyzer, ExInfoFromParent info)
{
Debug.Assert(this.IsMemberOf == null);
access = info.Access;
this.typeArgsResolved = classNameRef.Analyze(analyzer);
DType type = classNameRef.ResolvedType;
RoutineSignature signature;
if (typeArgsResolved)
analyzer.AnalyzeConstructedType(type);
if (type != null)
{
bool error_reported = false;
// make checks if we are sure about character of the type:
if (type.IsIdentityDefinite)
{
if (type.IsAbstract || type.IsInterface)
{
analyzer.ErrorSink.Add(Errors.AbstractClassOrInterfaceInstantiated, analyzer.SourceUnit,
position, type.FullName);
error_reported = true;
}
}
// disallow instantiation of Closure
if (type.RealType == typeof(PHP.Library.SPL.Closure))
{
analyzer.ErrorSink.Add(Errors.ClosureInstantiated, analyzer.SourceUnit, position, type.FullName);
error_reported = true;
}
// type name resolved, look the constructor up:
constructor = analyzer.ResolveConstructor(type, position, analyzer.CurrentType, analyzer.CurrentRoutine,
out runtimeVisibilityCheck);
if (constructor.ResolveOverload(analyzer, callSignature, position, out signature) == DRoutine.InvalidOverloadIndex)
{
if (!error_reported)
{
analyzer.ErrorSink.Add(Errors.ClassHasNoVisibleCtor, analyzer.SourceUnit,
position, type.FullName);
}
}
}
else
{
signature = UnknownSignature.Default;
}
callSignature.Analyze(analyzer, signature, info, false);
return new Evaluation(this);
}
示例2: ResolveConstructor
private bool ResolveConstructor(Analyzer/*!*/ analyzer)
{
if (!type.IsDefinite)
{
// attribute type has to be known definitely:
analyzer.ErrorSink.Add(Errors.UnknownCustomAttribute, analyzer.SourceUnit, node.Position,
type.FullName, type.FullName + "Attribute");
return false;
}
if (!type.IsCustomAttributeType)
{
analyzer.ErrorSink.Add(Errors.NotCustomAttributeClass, analyzer.SourceUnit, node.Position, type.FullName);
return false;
}
// resolve ctor overload in global context (only public ctors are visible):
bool check_visibility;
DRoutine constructor = analyzer.ResolveConstructor(type, node.Position, null, null, out check_visibility);
Debug.Assert(!check_visibility);
if (constructor.ResolveOverload(analyzer, node.CallSignature, node.Position, out overload) == DRoutine.InvalidOverloadIndex)
{
analyzer.ErrorSink.Add(Errors.ClassHasNoVisibleCtor, analyzer.SourceUnit, node.Position, type.FullName);
return false;
}
return true;
}