Przejdź do treści

KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ

Najczęstsze błędy typów

BASICVALIDATION_ONLYKretS

KretS nie ma konwersji niejawnych. `1 + 2.0` daje `KCS-KRS-0320`, `let x = null` bez typu daje `KCS-KRS-0307`. Folder `fixed/` pokazuje poprawki: jawne `toFloat(1)` i typ `String?`.

Edycja i zapisane wyniki

Witryna nie wykonuje kodu ani nie prowadzi walidacji SDK. Wyniki poniżej pochodzą z eksportu określonej wersji i przestają opisywać kod po jego zmianie.

Kanoniczne pliki projektu

module Main

fn Start() -> String {
    let sum = toFloat(1) + 2.0
    let nothing: String? = null
    return toString(sum) + " / " + orElse(nothing, "brak")
}

fn Shutdown() {
}

Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. module MainDeklaracja modułu KretS; porównaj nazwę z nazwą pliku.
  2. Pusta linia oddziela fragmenty źródła.
  3. fn Start() -> String {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.
  4. let sum = toFloat(1) + 2.0Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.
  5. let nothing: String? = nullWiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.
  6. return toString(sum) + " / " + orElse(nothing, "brak")Zwrócenie wartości z funkcji; nie jest zapisem do dziennika.
  7. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  8. Pusta linia oddziela fragmenty źródła.
  9. fn Shutdown() {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.
  10. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  11. Pusta linia oddziela fragmenty źródła.

Wynik i typowy błąd

Dwa pierwsze polecenia kończą się kodem 1 z diagnostyką w pliku `Script/Main.krs` (wiersz i kolumna). Wersja poprawiona zwraca „3.0 / brak” (`Float64` zawsze z kropką).

Na co uważać

Oczekiwanie, że liczba całkowita „sama” zamieni się na zmiennoprzecinkową. Zawsze używaj `toFloat`, `toInt`, `toString`.

Wymagania wersji i procedura lokalna

sdk
1.0.0-rc.3+kret.local.3
sdkInfoReports
1.0.0-rc.3
core
1.0.0-test.6.11-draft.1
os
Windows 11 x64
dotnet
.NET 10 runtime

Polecenia poniżej są instrukcją do samodzielnego wykonania z właściwym lokalnym SDK. DATA/OUT muszą wskazywać nowe katalogi testowe. Nie ma przycisku uruchamiania na serwerze.

  1. mixed-numberskret check mixed-numbers --jsonKatalog: project · Oczekiwany kod wyjścia: 1
  2. untyped-nullkret check untyped-null --jsonKatalog: project · Oczekiwany kod wyjścia: 1
  3. fixed-runkret run fixed --policy fixed/host-policy.json --data {DATA}Katalog: project · Oczekiwany kod wyjścia: 0

Wyniki zapisane w pakiecie źródłowym

To dowód z eksportu, nie wynik bieżącego wykonania w przeglądarce.

# EXPECTED_OUTPUT — KRETS-B02-CommonTypeErrors
# Rzeczywisty wynik uruchomienia (SDK 1.0.0-rc.3+kret.local.3, 2026-11-01T12:46:38Z). Ścieżki zastąpione znacznikami <project>, <data>, <out>, <sdk>.
# Actual output of the run. Paths replaced by placeholders.

### 1. mixed-numbers  (exit 1, PASS)
> kret check mixed-numbers --json
{
  "format": "kret-diagnostics/1",
  "project": "<project>\\mixed-numbers",
  "succeeded": false,
  "plugin": {
    "id": "LOCAL-KPL-KSB2TYPE",
    "name": "CommonTypeErrors",
    "version": "1.0.0",
    "profile": "standard",
    "database": false
  },
  "permissions": {
    "required": [],
    "optional": []
  },
  "handlers": {
    "lifecycle": [
      "start",
      "shutdown"
    ],
    "events": [],
    "commands": []
  },
  "diagnostics": [
    {
      "file": "<project>\\mixed-numbers\\Script\\Main.krs",
      "line": 4,
      "column": 12,
      "endLine": 4,
      "endColumn": 19,
      "severity": "error",
      "code": "KCS-KRS-0320",
      "message": "operator wymaga tych samych typ\u00F3w po obu stronach (Int64 i Float64) \u2014 u\u017Cyj jawnej konwersji, np. toFloat(x)"
    }
  ]
}

### 2. untyped-null  (exit 1, PASS)
> kret check untyped-null --json
{
  "format": "kret-diagnostics/1",
  "project": "<project>\\untyped-null",
  "succeeded": false,
  "plugin": {
    "id": "LOCAL-KPL-KSB2TYPE",
    "name": "CommonTypeErrors",
    "version": "1.0.0",
    "profile": "standard",
    "database": false
  },
  "permissions": {
    "required": [],
    "optional": []
  },
  "handlers": {
    "lifecycle": [
      "start",
      "shutdown"
    ],
    "events": [],
    "commands": []
  },
  "diagnostics": [
    {
      "file": "<project>\\untyped-null\\Script\\Main.krs",
      "line": 4,
      "column": 13,
      "endLine": 4,
      "endColumn": 17,
      "severity": "error",
      "code": "KCS-KRS-0307",
      "message": "null wymaga podania typu zmiennej, np. \u201Elet x: Int64? = null\u201D"
    }
  ]
}

### 3. fixed-run  (exit 0, PASS)
> kret run fixed --policy fixed/host-policy.json --data {DATA}
{
  "broker": {
    "pid": 4372,
    "startupMs": 39.762,
    "pluginHostSha256": "93405d128c95234d913efcd6e28fe54073caa0375135a2184290f958e7f7cfe5",
    "allowProvisionalRisk": false,
    "memoryIdle": {
      "managedBytes": 1193272,
      "allocatedBytes": 1190632,
      "workingSetBytes": 32464896,
      "privateBytes": 10031104,
      "peakWorkingSetBytes": 32464896,
      "cpuMs": 78.125
    }
  },
  "brokerWithPlugins": {
    "memory": {
      "managedBytes": 1522448,
      "allocatedBytes": 1519376,
      "workingSetBytes": 38707200,
      "privateBytes": 13770752,
      "peakWorkingSetBytes": 38739968,
      "cpuMs": 125
    }
  },
  "plugins": [
    {
      "package": "<project>\\fixed\\Build",
      "admitted": true,
      "startMs": 140.6137,
      "subject": "LOCAL-KPL-KSB2TYPE",
      "instance": "01a19725-cac3-73f5-8c40-961e7b135ffd",
      "pid": 50060,
      "jobObject": true,
      "isolation": {
        "level": "Restricted",
        "restrictedToken": true,
        "lowIntegrity": true,
        "appContainer": false
      },
      "limits": {
        "profile": "standard",
        "scriptMemoryBytes": 67108864,
        "processMemoryBytes": 201326592,
        "cpuPercent": 25,
        "maxInstructions": 50000000,
        "clamped": []
      },
      "calls": [
        {
          "operation": "start",
          "ok": true,
          "status": "Completed",
          "type": "String",
          "value": "3.0 / brak",
          "brokerMs": 12.0775,
          "vmMs": 5.8529,
          "instructions": 16,
          "hostCalls": 0,
          "pluginReportedMemory": {
            "managedBytes": 764056,
            "allocatedBytes": 761920,
            "workingSetBytes": 32104448,
            "privateBytes": 11173888,
            "peakWorkingSetBytes": 32432128,
            "cpuMs": 125
          }
        },
        {
          "operation": "shutdown",
          "ok": true,
          "status": "Completed",
          "type": "Unit",
          "value": null,
          "brokerMs": 0.8429,
          "vmMs": 0.0051,
          "instructions": 1,
          "hostCalls": 0,
          "pluginReportedMemory": {
            "managedBytes": 772280,
            "allocatedBytes": 770120,
            "workingSetBytes": 32231424,
            "privateBytes": 11190272,
            "peakWorkingSetBytes": 32432128,
            "cpuMs": 125
          }
        }
      ],
      "processMemoryMeasuredByBroker": {
        "workingSetBytes": 32219136,
        "privateBytes": 11190272,
        "peakWorkingSetBytes": 32432128,
        "cpuMs": 125
      },
      "summary": {
        "exitCode": 0,
        "killed": false,
        "hostCalls": 0,
        "denials": 0,
        "peakCommitBytes": 11976704,
        "log": []
      }
    }
  ],
  "brokerAfterClose": {
    "memory": {
      "managedBytes": 577816,
      "allocatedBytes": 1519376,
      "workingSetBytes": 39739392,
      "privateBytes": 14372864,
      "peakWorkingSetBytes": 39739392,
      "cpuMs": 140.625
    }
  },
  "audit": {
    "entries": 10,
    "denials": 0,
    "grantsIssued": 0,
    "denied": []
  },
  "exitCode": 0
}


Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. # EXPECTED_OUTPUT — KRETS-B02-CommonTypeErrorsOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  2. # Rzeczywisty wynik uruchomienia (SDK 1.0.0-rc.3+kret.local.3, 2026-11-01T12:46:38Z). Ścieżki zastąpione znacznikami <project>, <data>, <out>, <sdk>.Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  3. # Actual output of the run. Paths replaced by placeholders.Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  4. Pusta linia oddziela fragmenty źródła.
  5. ### 1. mixed-numbers (exit 1, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  6. > kret check mixed-numbers --jsonOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  7. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  8. "format": "kret-diagnostics/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  9. "project": "<project>\\mixed-numbers",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  10. "succeeded": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  11. "plugin": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  12. "id": "LOCAL-KPL-KSB2TYPE",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  13. "name": "CommonTypeErrors",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  14. "version": "1.0.0",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  15. "profile": "standard",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  16. "database": falsePole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  17. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  18. "permissions": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  19. "required": [],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  20. "optional": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  21. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  22. "handlers": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  23. "lifecycle": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  24. "start",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  25. "shutdown"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  26. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  27. "events": [],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  28. "commands": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  29. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  30. "diagnostics": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  31. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  32. "file": "<project>\\mixed-numbers\\Script\\Main.krs",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  33. "line": 4,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  34. "column": 12,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  35. "endLine": 4,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  36. "endColumn": 19,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  37. "severity": "error",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  38. "code": "KCS-KRS-0320",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  39. "message": "operator wymaga tych samych typ\u00F3w po obu stronach (Int64 i Float64) \u2014 u\u017Cyj jawnej konwersji, np. toFloat(x)"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  40. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  41. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  42. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  43. Pusta linia oddziela fragmenty źródła.
  44. ### 2. untyped-null (exit 1, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  45. > kret check untyped-null --jsonOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  46. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  47. "format": "kret-diagnostics/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  48. "project": "<project>\\untyped-null",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  49. "succeeded": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  50. "plugin": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  51. "id": "LOCAL-KPL-KSB2TYPE",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  52. "name": "CommonTypeErrors",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  53. "version": "1.0.0",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  54. "profile": "standard",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  55. "database": falsePole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  56. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  57. "permissions": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  58. "required": [],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  59. "optional": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  60. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  61. "handlers": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  62. "lifecycle": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  63. "start",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  64. "shutdown"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  65. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  66. "events": [],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  67. "commands": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  68. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  69. "diagnostics": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  70. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  71. "file": "<project>\\untyped-null\\Script\\Main.krs",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  72. "line": 4,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  73. "column": 13,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  74. "endLine": 4,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  75. "endColumn": 17,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  76. "severity": "error",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  77. "code": "KCS-KRS-0307",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  78. "message": "null wymaga podania typu zmiennej, np. \u201Elet x: Int64? = null\u201D"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  79. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  80. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  81. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  82. Pusta linia oddziela fragmenty źródła.
  83. ### 3. fixed-run (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  84. > kret run fixed --policy fixed/host-policy.json --data {DATA}Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  85. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  86. "broker": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  87. "pid": 4372,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  88. "startupMs": 39.762,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  89. "pluginHostSha256": "93405d128c95234d913efcd6e28fe54073caa0375135a2184290f958e7f7cfe5",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  90. "allowProvisionalRisk": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  91. "memoryIdle": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  92. "managedBytes": 1193272,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  93. "allocatedBytes": 1190632,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  94. "workingSetBytes": 32464896,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  95. "privateBytes": 10031104,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  96. "peakWorkingSetBytes": 32464896,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  97. "cpuMs": 78.125Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  98. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  99. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  100. "brokerWithPlugins": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  101. "memory": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  102. "managedBytes": 1522448,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  103. "allocatedBytes": 1519376,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  104. "workingSetBytes": 38707200,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  105. "privateBytes": 13770752,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  106. "peakWorkingSetBytes": 38739968,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  107. "cpuMs": 125Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  108. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  109. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  110. "plugins": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  111. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  112. "package": "<project>\\fixed\\Build",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  113. "admitted": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  114. "startMs": 140.6137,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  115. "subject": "LOCAL-KPL-KSB2TYPE",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  116. "instance": "01a19725-cac3-73f5-8c40-961e7b135ffd",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  117. "pid": 50060,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  118. "jobObject": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  119. "isolation": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  120. "level": "Restricted",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  121. "restrictedToken": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  122. "lowIntegrity": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  123. "appContainer": falsePole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  124. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  125. "limits": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  126. "profile": "standard",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  127. "scriptMemoryBytes": 67108864,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  128. "processMemoryBytes": 201326592,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  129. "cpuPercent": 25,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  130. "maxInstructions": 50000000,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  131. "clamped": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  132. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  133. "calls": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  134. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  135. "operation": "start",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  136. "ok": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  137. "status": "Completed",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  138. "type": "String",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  139. "value": "3.0 / brak",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  140. "brokerMs": 12.0775,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  141. "vmMs": 5.8529,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  142. "instructions": 16,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  143. "hostCalls": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  144. "pluginReportedMemory": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  145. "managedBytes": 764056,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  146. "allocatedBytes": 761920,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  147. "workingSetBytes": 32104448,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  148. "privateBytes": 11173888,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  149. "peakWorkingSetBytes": 32432128,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  150. "cpuMs": 125Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  151. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  152. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  153. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  154. "operation": "shutdown",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  155. "ok": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  156. "status": "Completed",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  157. "type": "Unit",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  158. "value": null,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  159. "brokerMs": 0.8429,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  160. "vmMs": 0.0051,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  161. "instructions": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  162. "hostCalls": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  163. "pluginReportedMemory": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  164. "managedBytes": 772280,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  165. "allocatedBytes": 770120,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  166. "workingSetBytes": 32231424,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  167. "privateBytes": 11190272,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  168. "peakWorkingSetBytes": 32432128,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  169. "cpuMs": 125Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  170. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  171. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  172. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  173. "processMemoryMeasuredByBroker": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  174. "workingSetBytes": 32219136,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  175. "privateBytes": 11190272,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  176. "peakWorkingSetBytes": 32432128,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  177. "cpuMs": 125Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  178. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  179. "summary": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  180. "exitCode": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  181. "killed": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  182. "hostCalls": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  183. "denials": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  184. "peakCommitBytes": 11976704,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  185. "log": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  186. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  187. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  188. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  189. "brokerAfterClose": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  190. "memory": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  191. "managedBytes": 577816,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  192. "allocatedBytes": 1519376,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  193. "workingSetBytes": 39739392,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  194. "privateBytes": 14372864,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  195. "peakWorkingSetBytes": 39739392,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  196. "cpuMs": 140.625Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  197. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  198. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  199. "audit": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  200. "entries": 10,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  201. "denials": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  202. "grantsIssued": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  203. "denied": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  204. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  205. "exitCode": 0Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  206. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  207. Pusta linia oddziela fragmenty źródła.
  208. Pusta linia oddziela fragmenty źródła.
Diagnostyka i raporty testów

{
  "format": "kretos-web-playground-diagnostics/1",
  "exampleId": "KRETS-B02-CommonTypeErrors",
  "sdk": "1.0.0-rc.3+kret.local.3",
  "origin": "PRECOMPUTED",
  "diagnostics": [
    {
      "id": "diag.KRETS-B02-CommonTypeErrors.1.1",
      "exampleId": "KRETS-B02-CommonTypeErrors",
      "step": 1,
      "stepName": "mixed-numbers",
      "command": "kret check mixed-numbers --json",
      "exitCode": 1,
      "file": "mixed-numbers/Script/Main.krs",
      "line": 4,
      "column": 12,
      "endLine": 4,
      "endColumn": 19,
      "severity": "error",
      "code": "KCS-KRS-0320",
      "message": "operator wymaga tych samych typów po obu stronach (Int64 i Float64) — użyj jawnej konwersji, np. toFloat(x)",
      "origin": "PRECOMPUTED (kret check, SDK 1.0.0-rc.3+kret.local.3)"
    },
    {
      "id": "diag.KRETS-B02-CommonTypeErrors.2.2",
      "exampleId": "KRETS-B02-CommonTypeErrors",
      "step": 2,
      "stepName": "untyped-null",
      "command": "kret check untyped-null --json",
      "exitCode": 1,
      "file": "untyped-null/Script/Main.krs",
      "line": 4,
      "column": 13,
      "endLine": 4,
      "endColumn": 17,
      "severity": "error",
      "code": "KCS-KRS-0307",
      "message": "null wymaga podania typu zmiennej, np. „let x: Int64? = null”",
      "origin": "PRECOMPUTED (kret check, SDK 1.0.0-rc.3+kret.local.3)"
    }
  ]
}
Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  2. "format": "kretos-web-playground-diagnostics/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  3. "exampleId": "KRETS-B02-CommonTypeErrors",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  4. "sdk": "1.0.0-rc.3+kret.local.3",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  5. "origin": "PRECOMPUTED",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  6. "diagnostics": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  7. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  8. "id": "diag.KRETS-B02-CommonTypeErrors.1.1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  9. "exampleId": "KRETS-B02-CommonTypeErrors",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  10. "step": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  11. "stepName": "mixed-numbers",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  12. "command": "kret check mixed-numbers --json",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  13. "exitCode": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  14. "file": "mixed-numbers/Script/Main.krs",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  15. "line": 4,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  16. "column": 12,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  17. "endLine": 4,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  18. "endColumn": 19,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  19. "severity": "error",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  20. "code": "KCS-KRS-0320",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  21. "message": "operator wymaga tych samych typów po obu stronach (Int64 i Float64) — użyj jawnej konwersji, np. toFloat(x)",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  22. "origin": "PRECOMPUTED (kret check, SDK 1.0.0-rc.3+kret.local.3)"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  23. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  24. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  25. "id": "diag.KRETS-B02-CommonTypeErrors.2.2",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  26. "exampleId": "KRETS-B02-CommonTypeErrors",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  27. "step": 2,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  28. "stepName": "untyped-null",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  29. "command": "kret check untyped-null --json",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  30. "exitCode": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  31. "file": "untyped-null/Script/Main.krs",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  32. "line": 4,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  33. "column": 13,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  34. "endLine": 4,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  35. "endColumn": 17,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  36. "severity": "error",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  37. "code": "KCS-KRS-0307",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  38. "message": "null wymaga podania typu zmiennej, np. „let x: Int64? = null”",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  39. "origin": "PRECOMPUTED (kret check, SDK 1.0.0-rc.3+kret.local.3)"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  40. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  41. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  42. }Zamknięcie struktury otwartej we wcześniejszych liniach.
Pochodzenie i integralność

KRET_LANGUAGE_KRETS.zip:KretS/Examples/BASIC_CommonTypeErrors/example.json

02_PLAYGROUND/EXAMPLES/KRETS-B02-CommonTypeErrors.json
SHA-256 B145CD747845D1BC5D484C53B607FF13DD8A4797E5E1C78FE3EDEA275FCB31F0

Materiały źródłowe do tego tematu

Przeczytaj powiązane rozdziały. Kod i kontrakty zachowano z importu; historia źródeł jest dostępna przy każdym rozdziale.

KRETS-B02-CommonTypeErrors — Najczęstsze błędy typów

KRETS-B02-CommonTypeErrors — Najczęstsze błędy typów

🇬🇧 English version below.
PoleWartość
TechnologiaKretS
PoziomBASIC
KlasyfikacjaVALIDATION_ONLY — Tylko walidacja (bez wykonania)
PlaygroundLOCAL_VALIDATE — lokalnie: walidacja (kret check, lokalny walidator Playground)
SDK1.0.0-rc.3+kret.local.3 (kandydat lokalny, niepodpisany)
Wynik testuTEST_RESULTS.json, rzeczywisty wynik: EXPECTED_OUTPUT.txt

Co pokazuje

KretS nie ma konwersji niejawnych. 1 + 2.0 daje KCS-KRS-0320, let x = null bez typu daje KCS-KRS-0307. Folder fixed/ pokazuje poprawki: jawne toFloat(1) i typ String?.

Pliki

Plik
fixed/Script/Main.krs
fixed/host-policy.json
fixed/plugin.kretl
mixed-numbers/Script/Main.krs
mixed-numbers/plugin.kretl
untyped-null/Script/Main.krs
untyped-null/plugin.kretl

Jak uruchomić

Katalog roboczy: katalog tego przykładu. kret oznacza <SDK>\Compiler\kret.exe, kretui-host — <SDK>\UiHost\kretui-host.exe. {DATA} / {OUT} to nowe, puste katalogi poza projektem. Wymagania: REQUIREMENTS.md.

  1. kret check mixed-numbers --json — Int + Float → KCS-KRS-0320 (oczekiwany błąd)
  2. kret check untyped-null --json — null bez typu → KCS-KRS-0307 (oczekiwany błąd)
  3. kret run fixed --policy fixed/host-policy.json --data {DATA} — wersja poprawiona działa

Oczekiwany wynik

Dwa pierwsze polecenia kończą się kodem 1 z diagnostyką w pliku Script/Main.krs (wiersz i kolumna). Wersja poprawiona zwraca „3.0 / brak” (Float64 zawsze z kropką).

Najczęstszy błąd

Oczekiwanie, że liczba całkowita „sama” zamieni się na zmiennoprzecinkową. Zawsze używaj toFloat, toInt, toString.

Otwórz cały rozdział ze źródłem →

Zaloguj się na konto użytkownika, aby zapisywać postęp i zakładki. Konta obsługi mogą czytać bez zapisu postępu. Logowanie →

Wybierz, co możemy zapamiętać w tej przeglądarce. Możesz zmienić decyzję w każdej chwili.

Polityka prywatności