t22679.nim 767 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. discard """
  2. cmd: "nim cpp $file"
  3. output:'''
  4. cppNZ.x = 123
  5. cppNZInit.x = 123
  6. hascpp.cppnz.x = 123
  7. hasCppInit.cppnz.x = 123
  8. hasCppCtor.cppnz.x = 123
  9. '''
  10. """
  11. {.emit:"""/*TYPESECTION*/
  12. struct CppNonZero {
  13. int x = 123;
  14. };
  15. """.}
  16. import sugar
  17. type
  18. CppNonZero {.importcpp, inheritable.} = object
  19. x: cint
  20. HasCpp = object
  21. cppnz: CppNonZero
  22. proc initCppNonZero: CppNonZero =
  23. CppNonZero()
  24. proc initHasCpp: HasCpp =
  25. HasCpp()
  26. proc ctorHasCpp: HasCpp {.constructor.} =
  27. discard
  28. proc main =
  29. var cppNZ: CppNonZero
  30. dump cppNZ.x
  31. var cppNZInit = initCppNonZero()
  32. dump cppNZInit.x
  33. var hascpp: HasCpp
  34. dump hascpp.cppnz.x
  35. var hasCppInit = initHasCpp()
  36. dump hasCppInit.cppnz.x
  37. var hasCppCtor = ctorHasCpp()
  38. dump hasCppCtor.cppnz.x
  39. main()