public override int VisitRawTypeMapStatment([NotNull] ClepsParser.RawTypeMapStatmentContext context) { string className = String.Join(".", CurrentNamespaceAndClass); ClepsType rawLLVMType = ClepsType.GetBasicType(context.typename()); //make sure this maps to an llvm type LLVMTypeRef?llvmType = ClepsLLVMTypeConvertorInst.GetPrimitiveLLVMTypeOrNull(rawLLVMType); if (llvmType == null) { string errorMessage = String.Format("Class {0} has a raw llvm type mapping to {1} which is not a valid llvm type", className, rawLLVMType.GetTypeName()); Status.AddError(new CompilerError(FileName, context.Start.Line, context.Start.Column, errorMessage)); return(-1); } if (ClassManager.ClassContainsRawLLVMTypeMapping(className)) { string errorMessage = String.Format("Class {0} already has a raw llvm type mapping to {1}. Cannot add another raw type mapping to {2}", className, ClassManager.LoadedClassesAndMembers[className].RawLLVMTypeMap.GetTypeName(), rawLLVMType.GetTypeName()); Status.AddError(new CompilerError(FileName, context.Start.Line, context.Start.Column, errorMessage)); return(-1); } if (ClassManager.RawLLVMTypeMappingExists(rawLLVMType)) { string errorMessage = String.Format("Raw llvm type {0} already has a mapping to {1}. Cannot add another raw type mapping to {2}", rawLLVMType.GetTypeName(), ClassManager.RawLLVMTypeMappingClasses[rawLLVMType].FullyQualifiedName, className); Status.AddError(new CompilerError(FileName, context.Start.Line, context.Start.Column, errorMessage)); return(-1); } ClassManager.AddRawLLVMTypeMapping(className, rawLLVMType); return(0); }