Diagnostics और त्रुटि कोड
प्रकाशित alpha.2 के नए diagnostics: सत्यापित त्रुटियाँ और सुधार में checked conversions (E0044), Unicode scalar index (E0045), module constant calls (E0037), private imports (E0041) और cycles (E0039) के छह पूरे source/stderr examples हैं। CI प्रकाशित compiler में इनके failure behavior को सत्यापित करता है। नीचे की पुरानी सूची मुख्यतः alpha.1 के लिए है।
Scarp त्रुटि होने पर आमतौर पर error[E000X], स्रोत फ़ाइल, लाइन/कॉलम, caret और सुधार का संकेत दिखाता है। स्रोत/गणना त्रुटि में प्रोग्राम का pending output नहीं लिखा जाता।
कुछ महत्वपूर्ण त्रुटियाँ
| कोड | अर्थ | पहला सुधार |
|---|---|---|
E0004 |
अपूर्ण/गलत syntax | ; और brackets देखें |
E0006 |
integer literal सीमा से बाहर | i64 सीमा में रखें |
E0007 |
integer overflow | मध्यवर्ती परिणाम जाँचें |
E0008 |
शून्य से भाग | भाजक nonzero रखें |
E0010 |
अघोषित नाम | पहले घोषित करें |
E0011 |
एक scope में duplicate नाम | अलग नाम या नया block |
E0013 |
immutable binding को बदलना | var उपयोग करें |
E0015 |
प्रकार असंगत | समान प्रकार के operands |
E0017 |
logical work budget समाप्त | loop/budget जाँचें |
E0019 |
repeat की नकारात्मक गिनती | शून्य या सकारात्मक संख्या |
E0026 |
फ़ंक्शन contract विफल | needs/ensures देखें |
E0027 |
फ़ंक्शन संसाधन सीमा | call depth/slots जाँचें |
E0030 |
गलत/nonfinite float literal | finite दशमलव लिखें |
E0032 |
vector length/shape mismatch | dimensions जाँचें |
E0033 |
vector index सीमा से बाहर | मान्य index लें |
E0034 |
गलत numerical domain | nonempty input या सही सीमा दें |
E0035 |
numerical buffer reservation असफल | allocation का आकार कम करें |
E0036 |
numeric payload quota समाप्त | नए buffers कम बनाएँ |
E0037 |
module declaration/API त्रुटि | सही file-level syntax |
E0038 |
module read/UTF-8 त्रुटि | path और encoding देखें |
E0039 |
import cycle | dependency graph बदलें |
E0041 |
private imported symbol | ज़रूरी हो तो pub दें |
E0042 |
गलत alias/member | spelling/type देखें |
E0043 |
निषिद्ध module path | relative .srp path लें |
Tile और matrix की त्रुटियाँ कैसे सुधारें?
सबसे पहले diagnostic code, सोर्स की line/column और संबंधित call trace पढ़ें। सफल scarp check <path> कोई आउटपुट नहीं दिखाता; असफल source/runtime validation exit code 1 और stderr पर त्रुटि देता है। ऐसी त्रुटियों के बाद pending program stdout नहीं लिखा जाता।
- आकार (E0032):
tile(values, rows, columns)में तत्वों की संख्याrows * columnsहोनी चाहिए।matvecमें tile की चौड़ाई और vector की लंबाई बराबर हों।matmulमें पहले tile की width और दूसरे की height मेल खाएँ। - इंडेक्स (E0033):
cell(tile, row, column)का index शून्य से शुरू होता है। Row की सीमाheight(tile)और column की सीमाwidth(tile)से कम होनी चाहिए।laneभी row जाँचता है। - Domain (E0034): कुछ गणनाओं के लिए खाली vector मान्य नहीं है; जैसे
mean([])। आवश्यक input दें, बिना वजह शून्य न मानें। - Budget (E0017/E0036): work limit और cumulative numerical allocation limit अलग हैं।
--max-stepsबढ़ाने से--max-vector-bytesनहीं बढ़ता। - पुराना syntax (E0005/E0004): आधुनिक Scarp में
letकी जगहbindयाvar, और typed functions के लिएfuncraहोता है। वर्ज़न तुलना देखें।
पहले सत्यापित टाइल ट्यूटोरियल का पूरा प्रोग्राम चलाएँ। फिर अपनी कॉपी में एक-एक argument बदलकर scarp check से त्रुटि समझें। ट्यूटोरियल मूल प्रकाशित compiler source और stdout से जाँचा गया है।
प्रकाशित प्रमाण: न्यूमेरिकल त्रुटियाँ और टाइल का व्यवहार। वास्तविक error text और caret स्थान source तथा platform के अनुसार बदल सकते हैं।
हर error में फ़ाइल की पहली detected समस्या आती है; बाद में अतिरिक्त समस्याएँ मिल सकती हैं। Syntax/name validation arithmetic evaluation से पहले होता है। समस्या निवारण और official diagnostic reference विस्तृत सूची रखते हैं।