mirror of
https://github.com/github/codeql.git
synced 2025-12-17 17:23:36 +01:00
89 lines
2.8 KiB
C#
89 lines
2.8 KiB
C#
using System;
|
|
using System.Diagnostics;
|
|
using System.Reflection;
|
|
using System.Runtime.CompilerServices;
|
|
using System.Runtime.InteropServices;
|
|
|
|
// General Information about an assembly is controlled through the following
|
|
// set of attributes. Change these attribute values to modify the information
|
|
// associated with an assembly.
|
|
[assembly: AssemblyTitle("C# attributes test")]
|
|
[assembly: AssemblyDescription("A test of C# attributes")]
|
|
[assembly: AssemblyConfiguration("")]
|
|
[assembly: AssemblyCompany("Semmle Plc")]
|
|
[assembly: AssemblyProduct("Odasa")]
|
|
[assembly: AssemblyCopyright("Copyright © Semmle 2018")]
|
|
[assembly: AssemblyTrademark("")]
|
|
[assembly: AssemblyCulture("")]
|
|
|
|
// Setting ComVisible to false makes the types in this assembly not visible
|
|
// to COM components. If you need to access a type in this assembly from
|
|
// COM, set the ComVisible attribute to true on that type.
|
|
[assembly: ComVisible(false)]
|
|
|
|
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
|
[assembly: Guid("2f70fdd6-14aa-4850-b053-d547adb1f476")]
|
|
|
|
// Version information for an assembly consists of the following four values:
|
|
//
|
|
// Major Version
|
|
// Minor Version
|
|
// Build Number
|
|
// Revision
|
|
//
|
|
// You can specify all the values or you can default the Build and Revision Numbers
|
|
// by using the '*' as shown below:
|
|
// [assembly: AssemblyVersion("1.0.*")]
|
|
[assembly: AssemblyVersion("1.0.0.0")]
|
|
[assembly: AssemblyFileVersion("1.0.0.0")]
|
|
|
|
[assembly: Args(0, new object[] { 1, 2, null }, typeof(ArgsAttribute), (E)12, null, Prop = new object[] { 1, typeof(int) })]
|
|
[module: Args(0, new object[] { 1, 2, null }, typeof(ArgsAttribute), (E)12, null, Prop = new object[] { 1, typeof(int) })]
|
|
|
|
[System.AttributeUsage(System.AttributeTargets.All)]
|
|
class Foo : Attribute
|
|
{
|
|
[Conditional("DEBUG2")]
|
|
static void foo() { }
|
|
}
|
|
|
|
class Bar
|
|
{
|
|
int inc([Foo] int x) { return x + 1; }
|
|
|
|
[MyAttribute(false)]
|
|
void M1() { }
|
|
|
|
[MyAttribute(true, y = "", x = 0)]
|
|
[My2(b: true, j: 1, a: false, X = 42)]
|
|
void M2() { }
|
|
}
|
|
|
|
class MyAttribute : Attribute
|
|
{
|
|
public int x;
|
|
public string y { get; set; }
|
|
public MyAttribute(bool b) { }
|
|
}
|
|
|
|
public enum E { A = 42 }
|
|
|
|
public class ArgsAttribute : Attribute
|
|
{
|
|
public object[] Prop { get; set; }
|
|
public ArgsAttribute(int i, object o, Type t, E e, int[] arr) { }
|
|
}
|
|
|
|
[Args(42, null, typeof(X), E.A, new int[] { 1, 2, 3 }, Prop = new object[] { 1, typeof(int) })]
|
|
public class X
|
|
{
|
|
[Args(42 + 0, new int[] { 1, 2, 3 }, null, (E)12, null, Prop = new object[] { 1, typeof(int) })]
|
|
[return: Args(42 + 0, new int[] { 1, 2, 3 }, null, (E)12, null, Prop = new object[] { 1, typeof(int) })]
|
|
int SomeMethod() { return 1; }
|
|
}
|
|
|
|
class My2Attribute : Attribute
|
|
{
|
|
public int X { get; set; }
|
|
public My2Attribute(bool a, bool b, int i = 12, int j = 13) { }
|
|
} |