1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-28 20:46:00 +02:00
Beef/IDE/mintest/src/main3.bf

329 lines
4.2 KiB
Beef
Raw Normal View History

//GORB
#pragma warning disable 168
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Threading;
//#define A
//#define B
2019-11-25 06:48:19 -08:00
struct StructA
{
2019-11-25 06:48:19 -08:00
public int mA;
2019-11-25 06:48:19 -08:00
public static StructA operator+(StructA lhs, float rhs)
{
2019-11-25 06:48:19 -08:00
StructA newVal = .();
newVal.mA = lhs.mA + (int)rhs;
return newVal;
}
}
2019-11-25 06:48:19 -08:00
struct StructB
{
2019-11-25 06:48:19 -08:00
public int mA;
2019-11-25 06:48:19 -08:00
public static bool operator==(StructA lhs, StructB rhs)
{
2019-11-25 06:48:19 -08:00
return lhs.mA == rhs.mA;
}
}
2019-11-25 06:48:19 -08:00
struct StructC
{
public int mA;
2019-11-25 06:48:19 -08:00
public static operator StructD(StructC val)
{
2019-11-25 06:48:19 -08:00
StructD conv;
conv.mA = val.mA;
return conv;
}
}
2019-11-25 06:48:19 -08:00
struct StructD
{
2019-11-25 06:48:19 -08:00
public int mA;
2019-11-25 06:48:19 -08:00
public static operator StructD(StructC val)
{
2019-11-25 06:48:19 -08:00
StructC conv;
conv.mA = val.mA;
return conv;
}
}
2019-11-25 06:48:19 -08:00
struct StructE
{
public int mA;
2019-11-25 06:48:19 -08:00
public static operator StructD(StructE val)
{
2019-11-25 06:48:19 -08:00
StructC conv;
conv.mA = val.mA;
return conv;
}
}
2019-11-25 06:48:19 -08:00
class ClassA
{
2019-11-25 06:48:19 -08:00
public int mA;
}
2019-11-25 06:48:19 -08:00
struct StructK
{
}
2019-11-25 06:48:19 -08:00
struct StructL : StructK
{
2019-11-25 06:48:19 -08:00
public int mA;
}
2019-11-25 06:48:19 -08:00
struct Checker
{
2019-11-25 06:48:19 -08:00
public static int CheckIt(int* iPtr, int len)
2019-09-29 07:44:39 -07:00
{
2019-11-25 06:48:19 -08:00
int acc = 0;
for (int i < len)
{
acc += iPtr[i];
}
return acc;
2019-09-29 07:44:39 -07:00
}
2019-11-25 06:48:19 -08:00
public static int CheckItSpan(int* iPtr, int len)
{
2019-11-25 06:48:19 -08:00
Span<int> span = .(iPtr, len);
2019-11-25 06:48:19 -08:00
int acc = 0;
for (int i < len)
2019-10-09 16:20:09 -07:00
{
2019-11-25 06:48:19 -08:00
acc += span[i];
2019-10-09 16:20:09 -07:00
}
2019-11-25 06:48:19 -08:00
return acc;
}
2019-11-25 06:48:19 -08:00
public static int CheckItSpanOpt(int* iPtr, int len)
{
2019-11-25 06:48:19 -08:00
OptSpan<int> span = .(iPtr, len);
2019-11-25 06:48:19 -08:00
int acc = 0;
for (int i < len)
{
2019-11-25 06:48:19 -08:00
acc += span[i];
}
2019-11-25 06:48:19 -08:00
return acc;
2019-10-09 16:20:09 -07:00
}
2019-09-29 07:44:39 -07:00
}
2019-10-09 16:20:09 -07:00
struct Blurg
2019-09-29 07:44:39 -07:00
{
2019-11-25 06:48:19 -08:00
static int GetHash<T>(T val) where T : IHashable
{
2019-11-25 06:48:19 -08:00
return val.GetHashCode();
}
2019-11-25 06:48:19 -08:00
public static int32 LongCall(
int abcdefghijklmnopqrstuvwxyz0,
int abcdefghijklmnopqrstuvwxyz1,
int abcdefghijklmnopqrstuvwxyz2,
int abcdefghijklmnopqrstuvwxyz3,
int abcdefghijklmnopqrstuvwxyz4,
int abcdefghijklmnopqrstuvwxyz5,
int abcdefghijklmnopqrstuvwxyz6,
int abcdefghijklmnopqrstuvwxyz7,
int abcdefghijklmnopqrstuvwxyz8,
int abcdefghijklmnopqrstuvwxyz9
)
{
2019-11-25 06:48:19 -08:00
return 0;
}
2019-11-27 08:02:15 -08:00
static mixin ScopedAlloc(int size, int align)
{
//(void*)scope:mixin [Align(align)] uint8[size]* { ? }
}
public static void TestAlloc()
{
int i = 1;
if (i == 1)
{
int size = 128;
scope:: int[size]*;
}
}
struct StructA
{
public int[10] mA;
2019-11-29 09:24:13 -08:00
public this()
{
mA = default;
void* v = &this;
}
2019-11-27 08:02:15 -08:00
}
enum EnumA
{
case None;
case A(StructA sa);
}
enum EnumB
{
case A;
case B(int a, int b);
}
2019-11-29 09:24:13 -08:00
/*[DisableChecks]
public static float GetSum<TCount>(float[TCount] vals) where TCount : const int
{
2019-11-29 09:24:13 -08:00
float total = 0;
for (int i < vals.Count)
total += vals[i];
return total;
}
2019-11-29 09:24:13 -08:00
public static void Max<T, TFunc>(T lhs, T rhs, TFunc func) where TFunc : delegate int(T lhs, T rhs)
{
2019-11-29 09:24:13 -08:00
}*/
2019-10-09 16:20:09 -07:00
public struct Base
2019-11-29 09:24:13 -08:00
{
int32 mA;
int64 mB;
}
public struct Derived : Base
2019-11-29 09:24:13 -08:00
{
int8 mC;
public int GetC()
{
return mC + 10000;
}
2019-11-29 09:24:13 -08:00
}
2019-11-29 09:24:13 -08:00
static int[] gArr = new .(1, 2, 3, 4, 5, );
2019-11-29 09:24:13 -08:00
[Checked]
public static int32 GetVal()
{
return 1;
}
[Unchecked]
public static int32 GetVal()
{
return 2;
}
2019-11-29 09:24:13 -08:00
public static int32 GetVal2()
{
return 3;
}
public static void Test()
{
//Test_Start
Derived dr = .();
dr.GetC();
Int iVal = (.)123;
int q = 999;
//Test_End
}
public static void Test2(int aa, int bb, int cc)
{
//Test_Start
Derived dr2 = .();
Int iVal2 = (.)123;
int q2 = 999;
String str = scope .();
//Test_End
}
public static void Recurse(int a)
2019-11-29 09:24:13 -08:00
{
int b = 234;
//Recurse_C
int c = 345;
2019-11-29 09:24:13 -08:00
if (a == 10)
return;
2019-11-29 09:24:13 -08:00
Recurse(a + 1);
int d = 100 + a;
}
public static void Test3()
{
//BreakpointTester_Test
int a = 0;
int b = 0;
while (a < 20)
{
//BreakpointTester_LoopA
a++;
}
//BreakpointTester_Recurse
Recurse(0);
}
public static void Test4()
{
//Test_Start
Derived dr = .();
Int iVal = (.)123;
int q = 999;
//Test_End
}
//[DisableObjectAccessChecks]
public static void Hey2()
{
String str = "Hey";
//int len = str.[Friend, DisableObjectAccessChecks]PrivateLength;
int len = str.[DisableObjectAccessChecks]Length;
//int len = str.[Friend]GetLength();
}
public static int32 Hey()
{
while (true)
{
Type t = typeof(Yoofer);
for (let field in t.GetFields())
{
StringView name = field.Name;
}
}
#unwarn
2019-11-29 09:24:13 -08:00
return (int32)123;
2019-09-29 07:44:39 -07:00
}
}
2019-11-29 09:24:13 -08:00
[Reflect]
struct Yoofer
{
int mA;
}