Browse Source

carp checkers: add carp checker and make it work

master
Veit Heller 5 months ago
parent
commit
3254a9e81d
32 changed files with 145 additions and 11 deletions
  1. +1
    -0
      Pond.package/CarpCheckExample.class/README.md
  2. +6
    -0
      Pond.package/CarpCheckExample.class/instance/failingCarpChecker.st
  3. +6
    -0
      Pond.package/CarpCheckExample.class/instance/succeedingCarpChecker.st
  4. +11
    -0
      Pond.package/CarpCheckExample.class/properties.json
  5. +1
    -0
      Pond.package/CarpCheckParser.class/README.md
  6. +7
    -0
      Pond.package/CarpCheckParser.class/instance/parse..st
  7. +13
    -0
      Pond.package/CarpCheckParser.class/instance/parseLine..st
  8. +11
    -0
      Pond.package/CarpCheckParser.class/properties.json
  9. +1
    -0
      Pond.package/CarpChecker.class/README.md
  10. +9
    -0
      Pond.package/CarpChecker.class/instance/check.st
  11. +3
    -0
      Pond.package/CarpChecker.class/instance/file..st
  12. +3
    -0
      Pond.package/CarpChecker.class/instance/file.st
  13. +5
    -0
      Pond.package/CarpChecker.class/instance/initialize.st
  14. +4
    -0
      Pond.package/CarpChecker.class/instance/run.st
  15. +13
    -0
      Pond.package/CarpChecker.class/properties.json
  16. +0
    -0
      Pond.package/CarpError.class/README.md
  17. +0
    -0
      Pond.package/CarpError.class/instance/defaultAction.st
  18. +0
    -0
      Pond.package/CarpError.class/instance/from..st
  19. +2
    -2
      Pond.package/CarpError.class/properties.json
  20. +1
    -0
      Pond.package/CarpParseError.class/README.md
  21. +3
    -0
      Pond.package/CarpParseError.class/instance/column..st
  22. +3
    -0
      Pond.package/CarpParseError.class/instance/file..st
  23. +3
    -0
      Pond.package/CarpParseError.class/instance/line..st
  24. +3
    -0
      Pond.package/CarpParseError.class/instance/message..st
  25. +13
    -0
      Pond.package/CarpParseError.class/instance/printOn..st
  26. +16
    -0
      Pond.package/CarpParseError.class/properties.json
  27. +1
    -1
      Pond.package/CarpProcess.class/class/carp..st
  28. +3
    -0
      Pond.package/CarpProcess.class/instance/carp..st
  29. +3
    -0
      Pond.package/CarpProcess.class/instance/dir..st
  30. +0
    -3
      Pond.package/CarpProcess.class/instance/setCarp..st
  31. +0
    -3
      Pond.package/CarpProcess.class/instance/setDir..st
  32. +0
    -2
      Pond.package/CarpProcess.class/properties.json

+ 1
- 0
Pond.package/CarpCheckExample.class/README.md View File

@@ -0,0 +1 @@
I’m an example for checking Carp code.

+ 6
- 0
Pond.package/CarpCheckExample.class/instance/failingCarpChecker.st View File

@@ -0,0 +1,6 @@
examples
failingCarpChecker
^ CarpChecker new
carp: '/Users/veitheller/.local/bin/carp';
dir: '/Users/veitheller/Documents/Code/Github/carp/Carp/';
file: '(def x a)'

+ 6
- 0
Pond.package/CarpCheckExample.class/instance/succeedingCarpChecker.st View File

@@ -0,0 +1,6 @@
examples
succeedingCarpChecker
^ CarpChecker new
carp: '/Users/veitheller/.local/bin/carp';
dir: '/Users/veitheller/Documents/Code/Github/carp/Carp/';
file: '(def x 1)'

+ 11
- 0
Pond.package/CarpCheckExample.class/properties.json View File

@@ -0,0 +1,11 @@
{
"commentStamp" : "VeitHeller 12/16/2019 12:01",
"super" : "Object",
"category" : "Pond",
"classinstvars" : [ ],
"pools" : [ ],
"classvars" : [ ],
"instvars" : [ ],
"name" : "CarpCheckExample",
"type" : "normal"
}

+ 1
- 0
Pond.package/CarpCheckParser.class/README.md View File

@@ -0,0 +1 @@
I’m a parser for the results of a Carp check.

+ 7
- 0
Pond.package/CarpCheckParser.class/instance/parse..st View File

@@ -0,0 +1,7 @@
parsing
parse: aStream
| split contents |
contents := aStream upToEnd.
contents ifEmpty: [ ^ OrderedCollection new ].
split := contents splitOn: '\n'.
^ split collect: [ :s | self parseLine: s ]

+ 13
- 0
Pond.package/CarpCheckParser.class/instance/parseLine..st View File

@@ -0,0 +1,13 @@
parsing
parseLine: aLine
| split res |
split := aLine splitOn: ':'.
split size == 3 ifFalse: [
^ CarpParseError new message: 'unparseable checker line: "' , aLine , '"'].
res := CarpParseError new
file: (split at: 1);
line: (split at: 2) asNumber.
split := (split at: 3) splitOn: ' '.
^ res
column: (split at: 1) asNumber;
message: (' ' join: split allButFirst)

+ 11
- 0
Pond.package/CarpCheckParser.class/properties.json View File

@@ -0,0 +1,11 @@
{
"commentStamp" : "VeitHeller 12/16/2019 11:18",
"super" : "Object",
"category" : "Pond",
"classinstvars" : [ ],
"pools" : [ ],
"classvars" : [ ],
"instvars" : [ ],
"name" : "CarpCheckParser",
"type" : "normal"
}

+ 1
- 0
Pond.package/CarpChecker.class/README.md View File

@@ -0,0 +1 @@
I’m a special case of a Carp process for checking errors.

+ 9
- 0
Pond.package/CarpChecker.class/instance/check.st View File

@@ -0,0 +1,9 @@
checking
check
| f |
f := FileReference newTempFilePrefix: 'checker' suffix: '.carp'.
f writeStreamDo: [:stream | stream nextPutAll: file].
proc arguments: {'--check' . f pathString }.
self run.
excepted ifNotNil: [ CarpError new messageText: excepted messageText ].
self died ifFalse: [ ^ CarpCheckParser new parse: proc stdoutStream ]

+ 3
- 0
Pond.package/CarpChecker.class/instance/file..st View File

@@ -0,0 +1,3 @@
checking
file: aString
file := aString

+ 3
- 0
Pond.package/CarpChecker.class/instance/file.st View File

@@ -0,0 +1,3 @@
checking
file
^ file

+ 5
- 0
Pond.package/CarpChecker.class/instance/initialize.st View File

@@ -0,0 +1,5 @@
checking
initialize
proc := OSSUnixSubprocess new command: 'carp';
redirectStdout;
addAllEnvVariablesFromParentWithoutOverride

+ 4
- 0
Pond.package/CarpChecker.class/instance/run.st View File

@@ -0,0 +1,4 @@
checking
run
[ [ proc run ] on: Error do: [ :err | excepted := err ] ] fork.
(Delay forMilliseconds: 500) wait.

+ 13
- 0
Pond.package/CarpChecker.class/properties.json View File

@@ -0,0 +1,13 @@
{
"commentStamp" : "VeitHeller 12/16/2019 10:34",
"super" : "CarpProcess",
"category" : "Pond",
"classinstvars" : [ ],
"pools" : [ ],
"classvars" : [ ],
"instvars" : [
"file"
],
"name" : "CarpChecker",
"type" : "normal"
}

Pond.package/CarpException.class/README.md → Pond.package/CarpError.class/README.md View File


Pond.package/CarpException.class/instance/defaultAction.st → Pond.package/CarpError.class/instance/defaultAction.st View File


Pond.package/CarpException.class/instance/from..st → Pond.package/CarpError.class/instance/from..st View File


Pond.package/CarpException.class/properties.json → Pond.package/CarpError.class/properties.json View File

@@ -1,6 +1,6 @@
{
"commentStamp" : "VeitHeller 12/14/2019 17:49",
"super" : "Exception",
"super" : "Error",
"category" : "Pond",
"classinstvars" : [ ],
"pools" : [ ],
@@ -9,6 +9,6 @@
"parent",
"error"
],
"name" : "CarpException",
"name" : "CarpError",
"type" : "normal"
}

+ 1
- 0
Pond.package/CarpParseError.class/README.md View File

@@ -0,0 +1 @@
I represent a line of Carp checker output.

+ 3
- 0
Pond.package/CarpParseError.class/instance/column..st View File

@@ -0,0 +1,3 @@
accessing
column: aNumber
column := aNumber

+ 3
- 0
Pond.package/CarpParseError.class/instance/file..st View File

@@ -0,0 +1,3 @@
accessing
file: aString
file := aString

+ 3
- 0
Pond.package/CarpParseError.class/instance/line..st View File

@@ -0,0 +1,3 @@
accessing
line: aNumber
line := aNumber

+ 3
- 0
Pond.package/CarpParseError.class/instance/message..st View File

@@ -0,0 +1,3 @@
accessing
message: aString
message := aString

+ 13
- 0
Pond.package/CarpParseError.class/instance/printOn..st View File

@@ -0,0 +1,13 @@
accessing
printOn: aStream
(file isNil or: [ line isNil or: column isNil ])
ifTrue: [ aStream nextPutAll: message ]
ifFalse: [
aStream nextPutAll: file.
aStream nextPutAll: ':'.
aStream nextPutAll: line asString.
aStream nextPutAll: ':'.
aStream nextPutAll: column asString.
aStream nextPutAll: ' '.
aStream nextPutAll: message.
]

+ 16
- 0
Pond.package/CarpParseError.class/properties.json View File

@@ -0,0 +1,16 @@
{
"commentStamp" : "VeitHeller 12/16/2019 11:26",
"super" : "Object",
"category" : "Pond",
"classinstvars" : [ ],
"pools" : [ ],
"classvars" : [ ],
"instvars" : [
"file",
"line",
"column",
"message"
],
"name" : "CarpParseError",
"type" : "normal"
}

+ 1
- 1
Pond.package/CarpProcess.class/class/carp..st View File

@@ -1,3 +1,3 @@
as yet unclassified
carp: aString
^ self new setCarp: aString
^ self new carp: aString

+ 3
- 0
Pond.package/CarpProcess.class/instance/carp..st View File

@@ -0,0 +1,3 @@
accessing
carp: aString
proc command: aString

+ 3
- 0
Pond.package/CarpProcess.class/instance/dir..st View File

@@ -0,0 +1,3 @@
accessing
dir: aString
proc environmentAt: 'CARP_DIR' put: aString

+ 0
- 3
Pond.package/CarpProcess.class/instance/setCarp..st View File

@@ -1,3 +0,0 @@
accessing
setCarp: aString
proc command: aString

+ 0
- 3
Pond.package/CarpProcess.class/instance/setDir..st View File

@@ -1,3 +0,0 @@
accessing
setDir: aString
proc environmentAt: 'CARP_DIR' put: aString

+ 0
- 2
Pond.package/CarpProcess.class/properties.json View File

@@ -7,8 +7,6 @@
"classvars" : [ ],
"instvars" : [
"proc",
"out",
"in",
"excepted"
],
"name" : "CarpProcess",


Loading…
Cancel
Save