loadClasses
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 16 Sep 2013 14:09:52 +0100
branchdevelopment
changeset 2734 f56049613ff3
parent 2380 9195eccdcbd9
child 3659 068e4b0aa297
permissions -rw-r--r--
Initial support for live code checker / lint. JavaLintService parses the code as you type and displays all errors and other problems. This is done by running compiler in check mode in background. This also removes the necessity for JavaCompilerProblemRegistry.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
617
4c7ad880c405 *** empty log message ***
cg
parents: 616
diff changeset
     1
"{ package:'stx:libjava' }"
616
53bf2ec50346 *** empty log message ***
cg
parents: 613
diff changeset
     2
53bf2ec50346 *** empty log message ***
cg
parents: 613
diff changeset
     3
|files|
53bf2ec50346 *** empty log message ***
cg
parents: 613
diff changeset
     4
53bf2ec50346 *** empty log message ***
cg
parents: 613
diff changeset
     5
'loading package stx:libjava ...' printCR.
53bf2ec50346 *** empty log message ***
cg
parents: 613
diff changeset
     6
553
277a6b22db83 *** empty log message ***
cg
parents: 506
diff changeset
     7
Scanner allowDollarInIdentifier:true.
277a6b22db83 *** empty log message ***
cg
parents: 506
diff changeset
     8
458
8d965d791b0a *** empty log message ***
cg
parents:
diff changeset
     9
"/
8d965d791b0a *** empty log message ***
cg
parents:
diff changeset
    10
"/ base system
8d965d791b0a *** empty log message ***
cg
parents:
diff changeset
    11
"/
553
277a6b22db83 *** empty log message ***
cg
parents: 506
diff changeset
    12
616
53bf2ec50346 *** empty log message ***
cg
parents: 613
diff changeset
    13
files := #(
676
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    14
	'Java.st'
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    15
	'JavaVM.st'
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    16
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    17
	'JavaConstantPool.st'
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    18
	'JavaSlotIndexCache.st'
458
8d965d791b0a *** empty log message ***
cg
parents:
diff changeset
    19
676
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    20
	'JavaObject.st'
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    21
	'JavaClass.st'
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    22
	'JavaMethod.st'
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    23
	'JavaMethodWithException.st'
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    24
	'JavaMethodWithHandler.st'
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    25
	'JavaNativeMethod.st'
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    26
	'JavaContext.st'
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    27
	'JavaProcess.st'
458
8d965d791b0a *** empty log message ***
cg
parents:
diff changeset
    28
676
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    29
	'JavaClassReader.st'
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    30
	'JavaDecompiler.st'
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    31
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    32
	'JavaExceptionTableEntry.st'
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    33
	'JavaLocalVariableTable.st'
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    34
	'JavaLocalVariableTableEntry.st'
458
8d965d791b0a *** empty log message ***
cg
parents:
diff changeset
    35
676
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    36
	'JavaRef.st'
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    37
	'JavaClassRef.st'
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    38
	'JavaField.st'
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    39
	'JavaFieldref.st'
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    40
	'JavaMethodref.st'
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    41
	'JavaInterfaceMethodref.st'
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    42
	'JavaNameandType.st'
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    43
	'JavaClassPointerRef.st'
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    44
	'JavaBuiltInClassPointerRef.st'
458
8d965d791b0a *** empty log message ***
cg
parents:
diff changeset
    45
676
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    46
	'JavaUnresolvedConstant.st'
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    47
	'JavaUnresolvedRefConstant.st'
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    48
	'JavaUnresolvedClassConstant.st'
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    49
	'JavaUnresolvedFieldrefConstant.st'
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    50
	'JavaUnresolvedMethodrefConstant.st'
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    51
	'JavaUnresolvedInterfaceMethodrefConstant.st'
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    52
	'JavaUnresolvedNameandTypeConstant.st'
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    53
	'JavaUnresolvedStringConstant.st'
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    54
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    55
	'JavaView.st'
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    56
	'JavaTopView.st'
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    57
	'JavaPopUpView.st'
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    58
	'JavaEmbeddedFrameView.st'
458
8d965d791b0a *** empty log message ***
cg
parents:
diff changeset
    59
676
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    60
	'SmalltalkAppletContext.st'
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    61
	'SmalltalkAppletStub.st'
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    62
).
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    63
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    64
(Smalltalk loadClassLibraryIfAbsent:'libjava') ifTrue:[
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    65
    |handle loaded|
458
8d965d791b0a *** empty log message ***
cg
parents:
diff changeset
    66
676
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    67
    loaded := OrderedCollection new.
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    68
    handle := ObjectFileLoader loadedObjectHandles 
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    69
		detect:[:h | |cls|
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    70
		    cls := h classes firstIfEmpty:nil.
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    71
		    cls notNil and:[cls package = 'stx:libjava']
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    72
		]
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    73
		ifNone:nil.
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    74
    handle notNil ifTrue:[
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    75
	handle classes do:[:c| c isMeta ifFalse:[loaded add:c classFilename]].
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    76
    ].
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    77
    files := files asOrderedCollection.
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    78
    loaded do:[:f| files remove:f ifAbsent:[]].
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    79
].
458
8d965d791b0a *** empty log message ***
cg
parents:
diff changeset
    80
616
53bf2ec50346 *** empty log message ***
cg
parents: 613
diff changeset
    81
files size > 0 ifTrue:[
53bf2ec50346 *** empty log message ***
cg
parents: 613
diff changeset
    82
  files do:[:s|
53bf2ec50346 *** empty log message ***
cg
parents: 613
diff changeset
    83
    '.' print.
676
31231f2e71cb *** empty log message ***
cg
parents: 675
diff changeset
    84
    Smalltalk fileIn:s.
616
53bf2ec50346 *** empty log message ***
cg
parents: 613
diff changeset
    85
  ].
53bf2ec50346 *** empty log message ***
cg
parents: 613
diff changeset
    86
  ' ' printCR.
458
8d965d791b0a *** empty log message ***
cg
parents:
diff changeset
    87
].
634
c5a9d34c6ae5 *** empty log message ***
cg
parents: 617
diff changeset
    88
'done (stx:libjava).' printCR.
458
8d965d791b0a *** empty log message ***
cg
parents:
diff changeset
    89
!
8d965d791b0a *** empty log message ***
cg
parents:
diff changeset
    90
8d965d791b0a *** empty log message ***
cg
parents:
diff changeset
    91