Browse Source

#545: Add hyperlink on enum values and argument names in attribute declarations.

pull/1143/head
Siegfried Pammer 7 years ago
parent
commit
91389245fd
  1. 13
      ICSharpCode.Decompiler/CSharp/Syntax/TypeSystemAstBuilder.cs

13
ICSharpCode.Decompiler/CSharp/Syntax/TypeSystemAstBuilder.cs

@ -430,7 +430,10 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -430,7 +430,10 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
attr.Arguments.Add(ConvertConstantValue(arg));
}
foreach (var pair in attribute.NamedArguments) {
attr.Arguments.Add(new NamedExpression(pair.Key.Name, ConvertConstantValue(pair.Value)));
NamedExpression namedArgument = new NamedExpression(pair.Key.Name, ConvertConstantValue(pair.Value));
if (AddResolveResultAnnotations)
namedArgument.AddAnnotation(new MemberResolveResult(new InitializedObjectResolveResult(attribute.AttributeType), pair.Key));
attr.Arguments.Add(namedArgument);
}
return attr;
}
@ -660,8 +663,12 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -660,8 +663,12 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
ITypeDefinition enumDefinition = type.GetDefinition();
TypeCode enumBaseTypeCode = ReflectionHelper.GetTypeCode(enumDefinition.EnumUnderlyingType);
foreach (IField field in enumDefinition.Fields) {
if (field.IsConst && object.Equals(CSharpPrimitiveCast.Cast(TypeCode.Int64, field.ConstantValue, false), val))
return new MemberReferenceExpression(new TypeReferenceExpression(ConvertType(type)), field.Name);
if (field.IsConst && object.Equals(CSharpPrimitiveCast.Cast(TypeCode.Int64, field.ConstantValue, false), val)) {
MemberReferenceExpression mre = new MemberReferenceExpression(new TypeReferenceExpression(ConvertType(type)), field.Name);
if (AddResolveResultAnnotations)
mre.AddAnnotation(new MemberResolveResult(mre.Target.GetResolveResult(), field));
return mre;
}
}
if (IsFlagsEnum(enumDefinition)) {
long enumValue = val;

Loading…
Cancel
Save