Skip to content

Commit 895f612

Browse files
committed
Merge TypeReference into Reference
1 parent d2d2d96 commit 895f612

File tree

11 files changed

+33
-50
lines changed

11 files changed

+33
-50
lines changed

src/Castle.Core/DynamicProxy/Generators/Emitters/SimpleAST/ArgumentReference.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ namespace Castle.DynamicProxy.Generators.Emitters.SimpleAST
2121
using System.Reflection.Emit;
2222

2323
[DebuggerDisplay("argument {Type}")]
24-
internal class ArgumentReference : TypeReference
24+
internal class ArgumentReference : Reference
2525
{
2626
public ArgumentReference(Type argumentType)
2727
: base(argumentType)

src/Castle.Core/DynamicProxy/Generators/Emitters/SimpleAST/AsTypeReference.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ internal class AsTypeReference : Reference
2727
private readonly Type type;
2828

2929
public AsTypeReference(Reference reference, Type type)
30+
: base(type)
3031
{
3132
this.reference = reference;
3233
this.type = type;

src/Castle.Core/DynamicProxy/Generators/Emitters/SimpleAST/ByRefReference.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ namespace Castle.DynamicProxy.Generators.Emitters.SimpleAST
2222

2323

2424
[DebuggerDisplay("&{localReference}")]
25-
internal class ByRefReference : TypeReference
25+
internal class ByRefReference : Reference
2626
{
2727
private readonly LocalReference localReference;
2828

src/Castle.Core/DynamicProxy/Generators/Emitters/SimpleAST/FieldReference.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ internal class FieldReference : Reference
2828
private readonly bool isStatic;
2929

3030
public FieldReference(FieldInfo field)
31+
: base(field.FieldType)
3132
{
3233
this.field = field;
3334
if ((field.Attributes & FieldAttributes.Static) != 0)
@@ -37,6 +38,7 @@ public FieldReference(FieldInfo field)
3738
}
3839

3940
public FieldReference(FieldBuilder fieldBuilder)
41+
: base(fieldBuilder.FieldType)
4042
{
4143
this.fieldBuilder = fieldBuilder;
4244
field = fieldBuilder;

src/Castle.Core/DynamicProxy/Generators/Emitters/SimpleAST/IndirectReference.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,12 @@ namespace Castle.DynamicProxy.Generators.Emitters.SimpleAST
2626
/// ByRef and provides indirect load/store support.
2727
/// </summary>
2828
[DebuggerDisplay("&{OwnerReference}")]
29-
internal class IndirectReference : TypeReference
29+
internal class IndirectReference : Reference
3030
{
31-
private readonly TypeReference byRefReference;
31+
private readonly Reference byRefReference;
3232

33-
public IndirectReference(TypeReference byRefReference)
34-
: base(byRefReference.Type.GetElementType())
33+
public IndirectReference(Reference byRefReference)
34+
: base(byRefReference.Type.GetElementType()!)
3535
{
3636
if (!byRefReference.Type.IsByRef)
3737
{
@@ -59,15 +59,15 @@ public override void EmitStore(IExpression value, ILGenerator gen)
5959
OpCodeUtil.EmitStoreIndirectOpCodeForType(gen, Type);
6060
}
6161

62-
public static TypeReference WrapIfByRef(TypeReference reference)
62+
public static Reference WrapIfByRef(Reference reference)
6363
{
6464
return reference.Type.IsByRef ? new IndirectReference(reference) : reference;
6565
}
6666

6767
// TODO: Better name
68-
public static TypeReference[] WrapIfByRef(TypeReference[] references)
68+
public static Reference[] WrapIfByRef(Reference[] references)
6969
{
70-
var result = new TypeReference[references.Length];
70+
var result = new Reference[references.Length];
7171

7272
for (var i = 0; i < references.Length; i++)
7373
{

src/Castle.Core/DynamicProxy/Generators/Emitters/SimpleAST/LocalReference.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ namespace Castle.DynamicProxy.Generators.Emitters.SimpleAST
2121
using System.Reflection.Emit;
2222

2323
[DebuggerDisplay("local {Type}")]
24-
internal class LocalReference : TypeReference
24+
internal class LocalReference : Reference
2525
{
2626
private LocalBuilder? localBuilder;
2727

src/Castle.Core/DynamicProxy/Generators/Emitters/SimpleAST/Reference.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,23 @@
1616

1717
namespace Castle.DynamicProxy.Generators.Emitters.SimpleAST
1818
{
19+
using System;
1920
using System.Reflection.Emit;
2021

2122
internal abstract class Reference : IExpression
2223
{
24+
private readonly Type type;
25+
26+
protected Reference(Type type)
27+
{
28+
this.type = type;
29+
}
30+
31+
public Type Type
32+
{
33+
get { return type; }
34+
}
35+
2336
public abstract void EmitAddress(ILGenerator gen);
2437

2538
public abstract void Emit(ILGenerator gen);

src/Castle.Core/DynamicProxy/Generators/Emitters/SimpleAST/ReferencesToObjectArrayExpression.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ namespace Castle.DynamicProxy.Generators.Emitters.SimpleAST
2424

2525
internal class ReferencesToObjectArrayExpression : IExpression
2626
{
27-
private readonly TypeReference[] args;
27+
private readonly Reference[] args;
2828

29-
public ReferencesToObjectArrayExpression(params TypeReference[] args)
29+
public ReferencesToObjectArrayExpression(params Reference[] args)
3030
{
3131
this.args = args;
3232
}

src/Castle.Core/DynamicProxy/Generators/Emitters/SimpleAST/TypeReference.cs

Lines changed: 0 additions & 33 deletions
This file was deleted.

src/Castle.Core/DynamicProxy/Generators/GeneratorUtil.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright 2004-2021 Castle Project - http://www.castleproject.org/
1+
// Copyright 2004-2025 Castle Project - http://www.castleproject.org/
22
//
33
// Licensed under the Apache License, Version 2.0 (the "License");
44
// you may not use this file except in compliance with the License.
@@ -25,7 +25,7 @@ namespace Castle.DynamicProxy.Generators
2525

2626
internal static class GeneratorUtil
2727
{
28-
public static void CopyOutAndRefParameters(TypeReference[] dereferencedArguments, LocalReference invocation,
28+
public static void CopyOutAndRefParameters(Reference[] dereferencedArguments, LocalReference invocation,
2929
MethodInfo method, MethodEmitter emitter)
3030
{
3131
var parameters = method.GetParameters();
@@ -131,12 +131,12 @@ bool IsReadOnly(ParameterInfo parameter)
131131
}
132132
}
133133

134-
private static ConvertExpression Argument(int i, LocalReference invocationArgs, TypeReference[] arguments)
134+
private static ConvertExpression Argument(int i, LocalReference invocationArgs, Reference[] arguments)
135135
{
136136
return new ConvertExpression(arguments[i].Type, new LoadRefArrayElementExpression(i, invocationArgs));
137137
}
138138

139-
private static AssignStatement AssignArgument(TypeReference[] dereferencedArguments, int i,
139+
private static AssignStatement AssignArgument(Reference[] dereferencedArguments, int i,
140140
LocalReference invocationArgs)
141141
{
142142
return new AssignStatement(dereferencedArguments[i], Argument(i, invocationArgs, dereferencedArguments));

0 commit comments

Comments
 (0)